在belongs_to关联上分组

时间:2009-05-21 08:55:28

标签: ruby-on-rails

我想使用group_by方法,而不是使用数据库中的列:

@posts.group_by(&:date)

我希望有类似的东西:

@ posts.group_by(安培;:作者)

帖子属于作者。

我只是不确定语法?

2 个答案:

答案 0 :(得分:5)

您可以在模型中写下:

def author_name
  self.author.name
end

然后

@posts.group_by(&:author_name)

答案 1 :(得分:1)

在这种情况下,大概你实际上可以做到

@posts.group_by(&:author_id)

更一般地说,你可以将一个块传递给group_by,所以如果你需要对一些任意逻辑进行分组:

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

作为一个有希望相关的旁边,上次我看,group_by的实现保留了馈送到它的数据的相对顺序,这可能是有用的记住,因为它允许您对“平面”列表中的数据进行排序发布,然后当你对它们进行分组时,顺序是在分组中维护的,而不是使用group_by处理嵌套数据的排序。