目前,我正在使用以下方式獲取所有玩家,進入他們的player_stats對象並彙總他們的目標。Rails:加入時限制某些記錄
Player.joins(:player_stats).group('players.id').order('SUM(player_stats.goals) DESC')
我怎麼能限制它不使用所有player_stats對象,如果我只想總結具有特定game_id的player_stat對象的目標是什麼?
注意:我正在使用mySQL。
目前,我正在使用以下方式獲取所有玩家,進入他們的player_stats對象並彙總他們的目標。Rails:加入時限制某些記錄
Player.joins(:player_stats).group('players.id').order('SUM(player_stats.goals) DESC')
我怎麼能限制它不使用所有player_stats對象,如果我只想總結具有特定game_id的player_stat對象的目標是什麼?
注意:我正在使用mySQL。
你只需要在那裏添加到查詢:
Player.joins(:player_stats).group(:id).where("player_stats.game_id = ?", game_id).order("SUM(player_stats.goals) DESC")
添加where子句查詢:
Player.joins(:player_stats)
# you can actually pass a model as well.
.where(player_stats: { game: game_id })
.group('players.id')
.order('SUM(player_stats.goals) DESC')
當你傳遞一個哈希.where
軌道將會爲那裏的條件協會。它實際上聰明的就夠用了聯想,所以你可以這樣做:
class Player
belongs_to :hometown
end
Player.joins(:hometown)
.where(hometown: { name: 'Brooklyn' })
和軌將查詢WHERE hometowns.name = 'Brooklyn'
,而不是hometown.name
。
因爲這通常比使用字符串條件更好。