如何通过连接表中的值总和设置顺序

时间:2013-09-25 17:20:49

标签: ruby-on-rails join controller sum

我正在尝试在我的视图中创建一个领导者表。我正在显示所有用户的列表,每个用户可以在每个结果中输入1个或多个事件(用户拥有并且属于许多事件通过=>结果):相对事件中赢得的点数。

我在编写控制器时遇到问题。

我希望得到一些东西
@standings = User.find(:all, :order => 'User.results.points.sum');

所有用户的列表,按其每个结果中的点总和顺序排列。

(我知道上面的代码还有很长的路要走 - 这只是我试图说明我的目标)

如果有人能就最好的方法给我一些建议,我将非常感激。

1 个答案:

答案 0 :(得分:2)

如下所示:

User.joins(:results).group("users.id").order("SUM(results.points)")

将用户连接到结果表,按用户分组,然后按结果总和排序。点。

如果您想先获得最高分数,那么您可以像这样调整排序:

User.joins(:results).group("users.id").order("SUM(results.points) DESC")