ActiveRecord:关系问题检查nil?—Rails 3.1



在以下查询中,我获得对象作为返回值(从而检查使用.nil是否没有结果?可以正常工作:

  store = Store.where(:some_id => myobj.some_id.to_i).first
  unless store.nil?

但是在下一个代码中,我得到ActiveRecord的返回类型::关系和检查使用.nil?失败了!

existing_store = Store.where(:some_str => myobj.some_str).not_hidden().active()
if existing_store.nil?

1。为什么呢?

2。在这种情况下,我如何检查没有结果?

3。在使用find()或where()

时,如何检查一般情况下是否没有记录返回?

使用blank?, nil?是真的,如果它真的是nil (NilClass的单个实例),但是你的第二个例子总是会返回一个数组,可能是空的,如果没有结果,但是一个数组。blank?检查空数组、空字符串、nil和false值。

如果你有blank?不像预期的行为的问题,你可以检查first.nil?

因为在第一种情况下,你试图检查第二个实例,你得到Array和一个数组不是nil,它是Array,即使它是空的。您应该使用empty?来检查这一点!

最新更新