我有一个播放器模型,播放器模型有很多PlayerStats。
如果我想获得玩家的总目标,我会使用:
$scope.Approved = $filter('filter')(
$scope.Summary.CorpEmployees,
{ locationId: item.Label, evaluationStatusId: '3' },
true // <--- This is the parameter that forces strict equality
);
如何使用播放器模型检索控制器中目标最多的玩家列表?
我在想这样的事情:
@player.player_stats.sum(:goals)
但是我无法做到这一点,因为玩家并没有直接进球,而是有很多玩家目标包含他们的目标。
注意:我使用的是mySQL数据库。
答案 0 :(得分:1)
我认为以下内容应该这样做:
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)