如何在 find_in_batches rails 中使用预加载(包括)

How to use Eager loading(includes) with find_in_batches rails

我在 users table 中有大量行,我需要应用预先加载来加载用户的评论。

User.includes(:comments)

由于用户集太大,添加预先加载时会消耗大量内存。

所以在经历了几个解决方案之后,我以下面的结尾

User.select(:id).find_in_batches do |user|
  users = User.where(id: user_id).includes(:comments)
end

是否有更好的方法来使用 find_in_batches 执行预先加载?

您可以这样使用 find_in_batches

User.where(id: user_ids).includes(:comments).find_in_batches do |users|
  users.each do |user|
    user.comment
  end
end

每批自动eager_loadingcomments