如何按最近的帖子对用户进行排序?

时间:2011-05-22 13:20:43

标签: sql ruby-on-rails ruby-on-rails-3 activerecord

我有两个模型:UserPost,其中user_id列(外键)和created_at列。

我想按最近的帖子对用户进行排序。例如,如果:

user_id = 1, created 3 posts at: 17/05/2011, 19/05/2011, 21/05/2011
user_id = 2, created 1 post at: 22/05/2011
user_id = 3, created 2 posts at: 18/05/2011, 20/05/2011

结果应该是:

user_id = 2
user_id = 1
user_id = 3

你如何在Rails 3中实现这一目标?

3 个答案:

答案 0 :(得分:2)

不确定RoR部分,但您正在查看分组声明:

select user_id, max(created_at) as created_at
from posts
group by user_id
order by max(created_at) desc

答案 1 :(得分:1)

应该是这样的:

Post.select(:user_id).group(:user_id).order("created_at DESC")

答案 2 :(得分:1)

如果您想按最新帖子排序,可以依赖最新id行最新的事实:

Post.select(:user_id).group(:user_id).order("MAX(id) DESC")

这样您就可以使用id列上的现有主键索引(并避免在created_at列上添加新索引)。