我想使用group_by方法,而不是使用数据库中的列:
@posts.group_by(&:date)
我希望有类似的东西:
@ posts.group_by(安培;:作者)
帖子属于作者。
我只是不确定语法?
答案 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处理嵌套数据的排序。