我有以下AR协会:
Category :has_many :posts
Category :has_many :authors, :through => :posts
Post :belongs_to :author
Post :has_many :comments
在我看来,我的目标是按帖子列出评论,按作者列出特定类别的帖子。我在查询中的尝试如下所示,使用包括进行预先加载。
category = Category.first
category.authors.includes(:posts => comments)
我希望我的观看列表如下:
author1
post1
comment1
post2
comment2
author2
post3
comment3
然而,当我尝试迭代ActiveRecord :: Relation对象时,我注意到第一级作者有重复,大小等于帖子的大小。有没有办法让我在第一级获得不重复的作者,然后能够遍历相关的帖子和他们的评论?
我想到的一个替代方法是遍历ActiveRecord :: Relation对象并将其重写为哈希,但首先我想看看是否有AR方式这样做。
答案 0 :(得分:0)
一种方法是在关系上设置:unique属性。
Category :has_many :authors, :through => :posts, :uniq => true
因此,category.authors将始终返回作者集。