Rails 3:group => :字段按created_at desc排序

时间:2010-11-23 10:55:40

标签: ruby-on-rails

如何选择按created_at desc排序的列分组的所有记录。

我可能想要检索每篇文章的所有最新评论。无论我做什么,小组(:article_id)都将返回最早的评论。

祝你好运。 AsbjørnMorell

3 个答案:

答案 0 :(得分:16)

类似的东西:

Comment.order('created_at DESC').all

应该这样做:)

如果您只想获得第一个结果,请使用first代替all。 您也可以使用limit。例如,获得第一个结果:

Comment.order('created_at DESC').limit(5).all

答案 1 :(得分:3)

对于SQL,您将找不到简单的答案 - 组在排序之前发生(因为组通常用于聚合数据)。只需在文章记录中保留latest_comment_id字段,然后在找到文章时加入对latest_comment_id的评论。

如果您希望每篇文章有多个评论,那么您将不得不求助于使用多个查询,或者只使用每篇文章的最新评论来维护临时表。

答案 2 :(得分:1)

Comment.group(:article_id).order('created_at DESC')