我有此代码ActiveRecord无?方法火灾查询
def evaluate(collection)
if collection.none?
[]
else
collection.group(@group).pluck(*@columns)
end
end
的collection
是ActiveRecord::Relation
对象 - 例如为User.where(:name => 'Killer')
现在有时我也通过Rails 4无关系Users.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
你怎么能指望知道,如果没有或没有符合您查询*不*查询任何记录? – nicooga
我的不好。 。没有?实际上是数组方法。如果没有关于 – ShadyKiller
的号召,我可以不知道为什么你需要这样做? 'collection.group(@group).pluck(* @ columns)'如果之前在集合中包含'none'会抛出一个错误? – tihom