0

在我们的 rails 3.2 应用程序中,我们需要从客户表中检索所有客户记录并将它们分配给一个变量,然后对变量customers进行查询(例如 .where(:active => true) customers。这里有两个问题:

  1. 检索所有记录的更好方法是什么?

    Customer.all作品。但是根据 rails 文档,当客户表变大时可能会出现性能问题。我们试过Customer.find_each了,它有错误"no block given (yield)"

  2. 如何使变量customersquery_able?

    对变量customers(如customers.where(:active => true))执行查询时,出现错误:undefined methodwhere' for #customers where . It seems that thecustomers`以这种方式可以查询?is an array object and can't take. How can we retrieve

感谢帮助。

4

1 回答 1

2

在 Rails < 4.all中立即调用数据库,加载记录并返回数组。而是使用返回可链接对象的“惰性”范围方法。ActiveRecord::Relation例如:

customers = Customer.scoped
...
customers = customers.where(:active => true)
customers = customers.where(...)
etc...

当您需要加载记录并对其进行迭代时,您可以调用find_each

customers.find_each do |customer|
  ...
end
于 2013-02-23T16:18:59.120 回答