7

我有一个我创建的排行榜:

 QuizuserAnswer.all(:include =>:user, :select => 'user_id, SUM(answer) AS points', :group =>'user_id', :order=>'points DESC'

这会返回一个像这样的对象:

 => [#<QuizuserAnswer user_id: 340>, #<QuizuserAnswer user_id: 348>]

现在我想找到一个特定用户的排行榜位置。有干净的方法吗?还是我必须遍历所有列?

4

1 回答 1

13

从很小的时候我就得到了您的问题,我认为您想要以下内容

answers = QuizuserAnswer.all(:include =>:user, :select => 'user_id, SUM(answer) AS points', :group =>'user_id', :order=>'points DESC')
user_id = 348
answers.map(&:user_id).index(user_id) #This will return 1

即它将返回用户给出的答案在答案列表中的位置

于 2013-09-03T12:55:49.310 回答