我想知道是否有办法获取一组 ActiveRecord 结果(或任何数组,就此而言)并以 25 个左右为一组进行处理。像这样:
User.all.each(25) do |group|
# Some code that works with this group of 25
end
我只是想避免执行多个连续的数据库查询。谢谢!
最佳答案
Rails 2.3 有这个特性。您可以指定 batch_size
参数。
User.find_in_batches(:batch_size =>25) do |group|
# Some code that works with this group of 25
end
你可以找到一个很好的教程here .请注意,Rails 将对每 25 条记录发出一次查询。如果您正在处理大量记录,这有助于保持低内存。如果您想将结果拆分为多个数组,则可以按照 Matt 的建议使用 in_groups_of
。
关于ruby-on-rails - 如何分组处理大型 ActiveRecord 结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1983792/