2012-04-20 33 views
1

我有以下AR協會:呼叫和迭代的ActiveRecord ::關聯對象

Category :has_many :posts 
Category :has_many :authors, :through => :posts 
Post :belongs_to :author 
Post :has_many :comments 

在我看來,我的目標是通過作者對特定類別列出了帖子發佈的評論,和。我對查詢的嘗試如下所示,使用include進行加載。

category = Category.first 
category.authors.includes(:posts => comments) 

我想我的觀點列表出來是這樣的:

author1 
    post1 
    comment1 
    post2 
    comment2 
author2 
    post3 
    comment3 

然而,當我嘗試遍歷的ActiveRecord :: Relation對象,我注意到作者的第一級有重複和大小等於帖子的大小。有沒有辦法讓我在第一級獲得不重複的作者,然後能夠遍歷相關的帖子和​​他們的評論?

我想到的另一種方法是遍歷ActiveRecord :: Relation對象,並將其重寫爲散列,但首先我想看看是否有AR方法來執行此操作。

回答

0

一種方法是在關係上設置:unique屬性。

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

因此,category.authors將始終返回作者集。

退房:rails guides - activerecord

+0

我不知道有可能被補充說,uniq的選項。完美工作。謝謝。 – asahi 2012-04-21 20:51:56

+0

很高興幫助。如果它解決了問題,請將我的答案標記爲已接受。 – Salil 2012-04-22 15:14:06