ActiveRecord触发2查询搜索

时间:2013-09-10 14:05:45

标签: ruby-on-rails activerecord

以下是我的申请发生的事情。

我的模型看起来像这样

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'

无法理解为什么第一个查询被触发以及如何避免它。在网上找不到任何东西。

1 个答案:

答案 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