1

我有以下 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 方式来执行此操作。

4

1 回答 1

0

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

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

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

签出:rails 指南 - activerecord

于 2012-04-21T09:30:40.087 回答