在Active Record对象中查找位置

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>]

现在我想要找到一个特定用户的联赛排名。有没有简单的方法?还是我必须遍历所有列?


“_position of one specific user_” 的意思是什么? - Vucko
你使用的是哪个数据库? - techvineet
如果您正在使用MySQL,则请访问以下链接:https://dev59.com/9HA75IYBdhLWcg3wv73A - techvineet
我正在使用MySQL。在这里,位置指的是行号,因为它们反映了用户在联赛表中的位置。 - flyte321
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
即返回用户在答案列表中给出的答案位置。

@flyte321:谢谢,记住一件事,如果answers中没有user_id,它将返回nil - Salil
这实际上解决了我在作用记录集合中生成“下一个”按钮的问题。 - dannio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接