0

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

我在编写控制器时遇到问题。我想要一些效果

@standings = User.find(:all, :order => 'User.results.points.sum');

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

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

如果有人可以就最好的方法给我一些建议,我将不胜感激。

4

1 回答 1

2

类似于以下内容:

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

将用户加入结果表,按用户分组,然后按 results.points 的总和排序。

然后,如果您首先想要最高点数,则可以像这样调整顺序:

User.joins(:results).group("users.id").order("SUM(results.points) DESC")
于 2013-09-25T17:57:08.120 回答