[英]Rails: Order Model by sum of stats in child model?
我有一个 Player 模型,一个 Player 模型有很多 PlayerStats。
如果我想获得玩家的总目标,我会使用:
@player.player_stats.sum(:goals)
如何使用 Player 模型来检索控制器中进球最多的球员列表?
我在想这样的事情:
@players = Player.order(:goals).limit(7)
但我不能这样做,因为玩家没有直接目标,它有许多包含他们目标的 PlayerStats。
注意:我使用的是 mySQL 数据库。
我认为应该做到以下几点:
Player
.joins(:player_stats)
.group('player_stats.id')
.order('SUM(player_stats.goals) DESC')
.limit(7)
您可以在您的情况下使用范围:
class Player
scope :by_goals, lambda {
joins(:player_stats).group('players.id').order('SUM(player_stats.goals) DESC')
}
end
并在控制器中:
Player.by_goals.limit(7)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.