我有这个代码
def evaluate(collection)
if collection.none?
[]
else
collection.group(@group).pluck(*@columns)
end
end
Thecollection
是一个ActiveRecord::Relation
对象 - 例如User.where(:name => 'Killer')
现在有时我也会通过 Rails 4 none 关系Users.none
,这就是为什么要检查 none。如果我不检查none?
,则调用会pluck
引发参数异常。
问题是每当我查询任何关系时,none?
它都会执行查询。看这里:
> User.where(id: 1).none?
User Load (0.2ms) SELECT "users".* FROM "v1_passengers" WHERE "users"."id" = 1
=> false
> User.where(id: 1).none.none?
=> true
我不想执行查询只是为了检查没有。任何解决方法?
更新:该none?
方法实际上是数组方法,这就是执行查询的原因。这就像打电话to_a
给关系。我想知道的是如何确定关系是否是none