调用并迭代ActiveRecord :: Relation对象

时间:2012-04-20 18:39:56

标签: ruby-on-rails-3 activerecord

我有以下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方式这样做。

1 个答案:

答案 0 :(得分:0)

一种方法是在关系上设置:unique属性。

  Category :has_many :authors, :through => :posts, :uniq => true

因此,category.authors将始终返回作者集。

退房:rails guides - activerecord