在以下查询中,我获得对象作为返回值(从而检查使用.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?
来检查这一点!