2016-10-09 65 views
0

目前,我正在使用以下方式獲取所有玩家,進入他們的player_stats對象並彙總他們的目標。Rails:加入時限制某些記錄

Player.joins(:player_stats).group('players.id').order('SUM(player_stats.goals) DESC') 

我怎麼能限制它不使用所有player_stats對象,如果我只想總結具有特定game_id的player_stat對象的目標是什麼?

注意:我正在使用mySQL。

回答

1

你只需要在那裏添加到查詢:

Player.joins(:player_stats).group(:id).where("player_stats.game_id = ?", game_id).order("SUM(player_stats.goals) DESC") 
0

添加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

因爲這通常比使用字符串條件更好。