帮助在Ruby on Rails中对记录进行排序

我有一个包含两列的分数表: user_idscore

user_id得分
1 200
1 120
1 230
2 300
2 345
3 100
3 40
4 350
4 500
……

Score.order('score DESC').limit(3)列出前3个得分。 相反,我如何获得前3个分数,其中每个用户只获得列表中的一个位置(他们的最高分)。

上表中的高分将是:

user_id:4分:500
user_id:2得分:345
user_id:1得分:230

谢谢!

蒂姆

您应该能够对查询进行分组:

 Score.order('score DESC').group('user_id').limit(3) 
 Score.all(:order => 'score DESC', :limit => 3, :group => :user_id) 

随着新的Arel:

 Score.group(:user_id).order('score DESC').limit(3)