获取所有包含的Active Record对象集合

时间:2016-08-19 10:21:18

标签: ruby-on-rails ruby activerecord eager-loading

有没有办法获取Active Relation查询中包含的所有对象? 像这样:

def index
  @items = Item.all.includes(:comments)
  @comments = @items.comments // No such method for AR Collection :(
end

在这种情况下获得所有项目的显而易见的方法是:

@comments = @items.map(&:comments).flatten.uniq

感谢使用.includes(:comments),不应该有N + 1个查询,但我担心此代码的性能。是否有任何内置或更有效的方法来获取所有收集的记录?

1 个答案:

答案 0 :(得分:0)

您可以请求以下评论:

@comments = Comment.where(item_id: Item.pluck(:id))