ruby-on-rails - 如何在 find_in_batches rails 中使用 Eager loading(includes)

标签 ruby-on-rails activerecord eager-loading

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

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每批处理。

关于ruby-on-rails - 如何在 find_in_batches rails 中使用 Eager loading(includes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66418745/

相关文章:

ruby-on-rails - 参数丢失或值为空 : user

c# - 渴望在 NHibernate 中加载一棵树

ruby-on-rails - Rails.application.eager_load 是做什么的!做什么?

ruby-on-rails - 使用 Watir 保存屏幕截图

ruby-on-rails - 无法验证 CSRF token 的真实性

ruby-on-rails - 如何在 Rails 中获取表中的下一个 ID

php - 在 Laravel 5.1 中缓存延迟加载查询

ruby-on-rails - 我可以在没有用户模型或任何身份验证的情况下在 Ruby on Rails 中使用 session /cookie 吗?

ruby-on-rails - Stylesheet_link_tag :all versus :media =>all

ruby-on-rails-3 - 如何向 ActiveRecord::Base 添加方法?