2016-10-09 3 views
0

現在、私はすべてのプレイヤーを取得し、そのplayer_statsオブジェクトに行き、目標を合計します。Rails:参加時に特定のレコードに制限する

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

どのように私は私が唯一の特定のgame_idを持ってplayer_statオブジェクトの目標を合計したい場合はどのようなすべてのplayer_statsオブジェクトを、使用しないように、それを制限することができますか?

注:私はmySQLを使用しています。

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

答えて

1

あなたは.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') 

はのための場所の条件を作成します。協会。あなたが行うことができますので、関連付けを使用するのに十分その実際にスマート:

class Player 
    belongs_to :hometown 
end 

Player.joins(:hometown) 
     .where(hometown: { name: 'Brooklyn' }) 

とレールがWHERE hometowns.name = 'Brooklyn'代わりのhometown.nameを照会します。

これは一般的に文字列条件を使用した場合よりも好ましいためです。

0

クエリにwhere句を追加:あなただけのクエリに場所を追加する必要が

関連する問題