我正在尝试在我的视图中创建一个领导者表。我正在显示所有用户的列表,每个用户可以在每个结果中输入1个或多个事件(用户拥有并且属于许多事件通过=>结果):相对事件中赢得的点数。
我在编写控制器时遇到问题。
我希望得到一些东西@standings = User.find(:all, :order => 'User.results.points.sum');
所有用户的列表,按其每个结果中的点总和顺序排列。
(我知道上面的代码还有很长的路要走 - 这只是我试图说明我的目标)
如果有人能就最好的方法给我一些建议,我将非常感激。
答案 0 :(得分:2)
如下所示:
User.joins(:results).group("users.id").order("SUM(results.points)")
将用户连接到结果表,按用户分组,然后按结果总和排序。点。
如果您想先获得最高分数,那么您可以像这样调整排序:
User.joins(:results).group("users.id").order("SUM(results.points) DESC")