首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环使用Ruby中的count + modulo (如果适用)

循环使用Ruby中的count + modulo (如果适用)
EN

Stack Overflow用户
提问于 2015-04-10 00:40:42
回答 2查看 173关注 0票数 0

为了打破数据的长时间迁移,我使用了一个仅限于100组的查询,然后处理这100条记录。

就像这样..。

代码语言:javascript
复制
count = Model.where("conditions").count
count = count / 100
count = count+1 if count%100 != 0
count.times do
  #do my data migration steps .limit(100)...
end

根据除以100时是否有余数,是否有捷径或更好的方法进行计数?感觉好像我忘记了一个简单的方法(除了舍入看起来慢一些,但也许不是)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-10 01:14:12

是。Rails很好地支持这一点,您不必为查找批记录而提交自己的代码。

最简单的方法是简单地使用find_each,它一次无缝地加载1000个记录:

代码语言:javascript
复制
Model.find_each do |model|
  # ...
end

底层机制是find_in_batches,其默认批处理大小为1000。您可以直接使用find_in_batches,但不必使用,find_each就足够了:

代码语言:javascript
复制
Model.find_in_batches(batch_size: 100) do |batch|
  batch.each do |model|
    # ...
  end
end
票数 2
EN

Stack Overflow用户

发布于 2015-04-10 01:15:52

Rails有几种在批次中加载记录的方法。find_each在这里会工作得很好。它默认为1000批,但您可以指定批处理大小:

代码语言:javascript
复制
Model.find_each(batch_size: 100) do |record|
  ...
end 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29551449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档