我有两个模型:User
和Post
,它们有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
您将如何在Rails3中实现这一点?
不确定RoR部分,但您正在通过语句查看组:
select user_id, max(created_at) as created_at
from posts
group by user_id
order by max(created_at) desc
应该类似于:
Post.select(:user_id).group(:user_id).order("created_at DESC")
如果你想按最新的帖子排序,你可以相信id
最大的一行是最新的:
Post.select(:user_id).group(:user_id).order("MAX(id) DESC")
通过这种方式,您可以在id
列上使用现有的主键索引(并避免在created_at
列上添加新索引)。