Ruby on rails ActiveRecord触发2查询以进行搜索

Ruby on rails ActiveRecord触发2查询以进行搜索,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,下面是我的应用程序发生的情况 我的模型看起来像这样 class Model1 < ActiveRecord::Base def self.foo(value) Model1.where(:field => value) end end 现在,我希望它触发一个查询来获取记录。相反,我得到的是两个查询 SELECT COUNT(*) FROM `MODEL1` WHERE `MODEL1`.`field` = 'foo' SELECT * FROM `M

下面是我的应用程序发生的情况

我的模型看起来像这样

class Model1 < ActiveRecord::Base
    def self.foo(value)
        Model1.where(:field => value)
    end
end
现在,我希望它触发一个查询来获取记录。相反,我得到的是两个查询

SELECT COUNT(*) FROM `MODEL1` WHERE `MODEL1`.`field` = 'foo'
SELECT * FROM `MODEL1` WHERE `MODEL1`.`field` = 'foo'

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

我和评论中的其他人一样有点困惑,但以下是您可以尝试的内容-

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

除非呈现该语句的结果,否则由于ActiveRelation延迟查询触发器,您甚至不应该得到1个查询,更不用说2个查询了。您能在使用此语句的上下文中显示整个代码吗?Model1.where:field=>'foo'本身会创建一个ActiveRecord::Relation,但不会触发任何SQL请求。你怎么利用这段关系?我的错。更新了它。希望这次我说的很清楚。你是在问模型1上的任何关系的数量或大小吗?没有足够的信息,也许你是在检查它是否在某个地方是空白的?或现在,或任何其他人,仍然得到同样的结果。有什么我可以帮助澄清的吗?当然,您可以粘贴rails服务器的完整输出,用于问题中发生的操作吗?
class Model1 < ActiveRecord::Base
  def foo(value)
    self.where("field = ?", value) #see http://guides.rubyonrails.org/active_record_querying.html#array-conditions
  end
end