获取 rails 中的所有 has_many 个关联
get all has_many associations in rails
假设我有两个模型 Author
和 Book
,其中作者 has_many :books
和书籍 belongs_to :author
。有没有一种方法可以获取所有作者的所有书籍,而无需使用 each
遍历所有作者?
年,可以用joins
或includes
,如果你想得到所有有作者
的书
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.
假设我有两个模型 Author
和 Book
,其中作者 has_many :books
和书籍 belongs_to :author
。有没有一种方法可以获取所有作者的所有书籍,而无需使用 each
遍历所有作者?
年,可以用joins
或includes
,如果你想得到所有有作者
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.