2017-04-02 24 views
0

私はWeb開発とレールが初めてで、初めてクエリオブジェクトを作成しようとしています。私はテーブルPlayersとテーブルfor DefieStatsを持っていますが、このテーブルの各行はプレーヤーに属しています。プレイヤーにはフィールドapi_player_numberがあります。これは私が参照している第三者が使用しているIDです。 DefensiveStatsオブジェクトには、このクエリに関連する2つのフィールド(season_number整数とweek_number整数)があります。私がしたいのは、api_player_number、season_number、およびweek_numberという3つのパラメータを取る単一のクエリを構築することです.pi_player_number =が渡されたプレーヤに属する、対応する季節および週番号を持つDefensiveStatsオブジェクトを返す必要がありますapi_player_number。 - 特に>Rails、各テーブルのwhere句を持つ2つのテーブルを結合する

class DefensiveStatsWeekInSeasonQuery 
def initialize(season_number, week_number, api_player_number) 
    @season_number = season_number 
    @week_number = week_number 
    @api_player_number = api_player_number 
end 

# data method always returns an object or list of object, not a relation 
def data 
    defensive_stats = Player.where(api_player_number: @api_player_number) 
    .joins(:defensive_stats) 
    .where(season_number:@season_number, week_number: @week_number) 
    if defensive_stats.nil? 
     defensive_stats = DefensiveStats.new 
    end 
    defensive_stats 
end 

エンド

を、第2場所プレーヤークラスの句、およびないDefensiveStatsクラスを実行しかし、これは、動作しません。ここで

は、私がしようとしているものです、 "SQLite3 :: SQLException:そのような列はありません:players.season_number"

このクエリはどのように構成できますか?ありがとうございました!!!

答えて

1
Player.joins(:defensive_stats).where(players: {api_player_number: @api_player_number}, defensive_stats: {season_number: @season_number, week_number: @week_number}) 

OR

Player.joins(:defensive_stats).where("players.api_player_number = ? and defensive_stats.season_number = ? and defensive_stats.week_number = ?", @api_player_number, @season_number, @week_number) 
+0

ありがとう!これは完璧です –

関連する問題