1

这是我的应用程序正在发生的事情。

我的模型看起来像这样

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'

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

4

1 回答 1

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
于 2013-09-10T15:24:20.850 回答