2009-05-21 86 views
3

我想用,但而不是在數據庫中使用列GROUP_BY方法:GROUP_BY在belongs_to的assocciation

@posts.group_by(&:date) 

我想有這樣的:

@ posts.group_by( &:作者)

where post belongs_to author。

我只是不確定的語法?

回答

5

您可以在模型中寫道:

def author_name 
    self.author.name 
end 

然後

@posts.group_by(&:author_name) 
+1

哇,有時我覺得真的很愚蠢...... – Cameron 2009-05-21 09:18:53

1

在這種情況想必你實際上只是做

@posts.group_by(&:author_id) 

更一般地,你可以通過一個block到group_by,所以如果你需要對某些任意邏輯進行分組:

@posts.group_by { |post| 
    ... some code returning a value to group this post by ... 
} 

作爲一個有希望的相關因素,上次我查看時,group_by的實現保留了輸入給它的數據的相對順序,這對記住它有用,因爲它允許你對'flat '的帖子列表,然後當您將它們分組時,訂單將保留在分組中,而不是處理由group_by輸出的嵌套數據進行排序。