Rails:按子模型中的统计总和排序模型?
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)
我有一个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)