我想知道是否有办法获取一系列ActiveRecord结果(或任何数组,就此而言)并以25个左右的组进行处理。像这样:
User.all.each(25) do |group|
# Some code that works with this group of 25
end
我只是想避免做多个连续的数据库查询。谢谢!
答案 0 :(得分:21)
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
。
答案 1 :(得分:-2)
你可能正在寻找
Array#in_groups_of
http://weblog.rubyonrails.org/2006/3/1/new-in-rails-enumerable-group_by-and-array-in_groups_of