是否可以在轨道(或红宝石的其他地方)防止块返回?在数组中返回50,000条记录需要一段时间

col*_*lue 1 ruby activerecord return ruby-on-rails block

所以我在我的表中的所有50,000条记录中运行了一些逻辑(实际上有几条记录,但我们只是在这里解决一个它们都是相同的操作)并标记布尔指示符:

ActiveRecord::Base.silence do
  CoreRevenue.where('core_revenues_usd IS NOT NULL').each do |c|
    c.ok = true
    c.save
  end
end
Run Code Online (Sandbox Code Playgroud)

正如你可能已经注意到,我已经从输出一串SQL响应控制台的"闭嘴"的数据库,但总是有在操作结束的大阵列转储,可以采取有时只要5-10秒.

所以我想知道我是否可以在操作完成后停止从x哪里x = CoreRevenue.where('core_revenues_usd IS NOT NULL')倾倒.谢谢.

同样"令人兴奋的"将是一个答案,解释为什么由于某种lambda演算计算事物或者你有什么不可能

And*_*all 5

您无法阻止块返回,但您可以返回其他内容:

ActiveRecord::Base.silence do
  CoreRevenue.where('core_revenues_usd IS NOT NULL').each do |c|
    c.ok = true
    c.save
  end

  nil
end
Run Code Online (Sandbox Code Playgroud)