ruby-on-rails - 如何分组处理大型 ActiveRecord 结果集

标签 ruby-on-rails ruby arrays activerecord

我想知道是否有办法获取一组 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/

相关文章:

arrays - perl6 : passing an Array of UInt fails, 而 Int 数组成功

ruby-on-rails - 如何授权google-api-ruby-client?

ruby-on-rails - SimpleCov 与 Selenium/Rails

mysql - 如何在 Ruby on Rails 中实现数据库 View

ruby - 在 Rails 3 中安装同一引擎的多个实例

ruby-on-rails - 为什么 Rails 实现 String#starts_with 方法?而不是 start_with 的别名?

c - 这 4 项 :character, 数组、字符串、文字之间有什么区别。在C?

ruby-on-rails - 来自嵌套哈希的 Ruby 总和

javascript - 如果选择单选按钮则显示表单

javascript 将变量存储在数组中以启用按变量值排序