ruby-on-rails – 在Rails 3.2中,如何为一个非常大的表“pluck_in_batches”

我有一个庞大的表Foo,我需要从中获取某个字段中的所有值,Foo.who.

该数组有数百万行,但在who列中只有几千个不同的值.

如果表格当然较小我当然只是使用Foo.pluck(:who)

如果我使用Foo.find_in_batches do | a_batch |每个集合都是一个Foo记录数组,而不是Foo记录的activerecord集合,因此我不能使用.pluck()和AFAIK提取who列的唯一方法是通过迭代的.map(&:who)之类的东西在阵列上.

有没有办法从批处理中抽取Foo中的who列,而不需要迭代每个批处理的每个元素来提取who列?

最佳答案 试试这个:

Foo.select(:id, :who).find_in_batches do |a_batch|
  ...
end
点赞