我有此代碼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