2017-04-02 31 views
0

我是web開發和rails的新手,我試圖爲我第一次構建一個查詢對象。我有一個表玩家,和一個表DefensiveStats,它有一個foriegn-key player_id,所以這個表中的每一行都屬於一個玩家。玩家有一個字段api_player_number,這是我參考的第三方使用的ID。 DefensiveStats對象有兩個與此查詢相關的字段 - 一個season_number整數和一個week_number整數。我想要做的是構建一個帶有3個參數的單個查詢:api_player_number,season_number和week_number,並且它應該返回帶有相應季節和星期編號的DefensiveStats對象,屬於具有api_player_number =的玩家傳入api_player_number。Rails,將兩個表與每個tabe的where子句連接起來

以下是我已經嘗試:

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 

然而,這是不行的,因爲它進行第二次的where子句播放器上的類,而不是DefensiveStats類 - >專,「SQLite3 :: SQLException:no such column: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

謝謝!太棒了 –