获取 rails 中的所有 has_many 个关联

get all has_many associations in rails

假设我有两个模型 AuthorBook,其中作者 has_many :books 和书籍 belongs_to :author。有没有一种方法可以获取所有作者的所有书籍,而无需使用 each 遍历所有作者?

年,可以用joinsincludes,如果你想得到所有有作者

的书
Book.includes(:author)

如果想获取所有书籍,可以简化:

Book.all

你可以使用all方法。

Book.all

这将return所有的书籍记录在案。

它会 return 所有有作者的书并按作者 ID 分组。

Book.joins(:author).group(:author_id)

关于 .all 的警告,它会为每本书创建一个实例。如果你有一个大 table 这可能会非常昂贵。

如果您在控制台中一次性执行此操作并且您已经知道 table 的大小是合理的,那么您没问题。我强烈建议不要将它放在应用程序中,除非你知道 table 不会增长。

如果是视图,请实施分页。如果用于后端任务,请使用批处理 http://api.rubyonrails.org/classes/ActiveRecord/Batches.html.