以下是我的申请发生的事情。
我的模型看起来像这样
class Model1 < ActiveRecord::Base
def self.foo(value)
Model1.where(:field => value)
end
end
然后我有一个使用此模型的控制器
...
Model1.foo('foo)
...
现在,我希望它能够触发单个查询来获取记录。而不是那样,我得到的是2个查询。
SELECT COUNT(*) FROM `MODEL1` WHERE `MODEL1`.`field` = 'foo'
SELECT * FROM `MODEL1` WHERE `MODEL1`.`field` = 'foo'
无法理解为什么第一个查询被触发以及如何避免它。在网上找不到任何东西。
答案 0 :(得分:0)
我有点困惑(与评论中的其他人一样),但这是你可以尝试的 -
class Model1 < ActiveRecord::Base
def self.foo(value)
Model1.where(:field => value)
end
end
应该是
class Model1 < ActiveRecord::Base
def foo(value)
self.where("field = ?", value) #see http://guides.rubyonrails.org/active_record_querying.html#array-conditions
end
end