0
我有三種模型:RaceCards,Races和Wagers。如何將動態條件應用於Rails 3 has_many:通過關聯
class RaceCard < ActiveRecord::Base
has_many :races
has_many :wagers
end
class Race < ActiveRecord::Base
belongs_to :race_card
has_many :wagers, :through => :race_card
end
class Wager < ActiveRecord::Base
belongs_to :race_card
has_many :races, :through => :race_card
end
rails g model RaceCard race_card_date:date number_of_race:integer
rails g model Race race_card_id:integer race_nbr:integer
rails g model Wager race_nbr:integer race_card_id:integer wager_type:string payoff:integer
所以,如果我這樣做控制檯:
Wager.first.races #All races on the race card are returned. Good!
但我想確定返回什麼種族的一種方式,所以我加一個條件:
if I add this: :condition =>{:race_nbr => 1}
Wager.first.races #Return just race 1, but this is static (always set to 1)
我的問題是如何我是否將條件設置爲下注模式中的race_nbr:
:condition => {:race_nbr => wager.race_nbr} #throws an error
:condition => {:race_nbr => self.race_nbr} #throws an error
我已經嘗試了很多其他的東西,只是似乎無法得到它。任何指導將不勝感激。提前致謝。
更新:我現在已經試過下面
:condition => "wagers.race_nbr = races.race_nbr" #unfortunately this yields the following:
SQL error or missing database (no such column wagers.race_nbr)
我希望把狀態協會內。請問這樣的工作::condition => {wager_nbr => races.race_nbr} – Mutuelinvestor 2012-01-15 03:53:18
差不多,請參閱上面編輯的答案 – PinnyM 2012-01-15 04:02:36
我認爲我們有它,但是當我在控制檯嘗試時,我得到以下內容:下注負載(0.0ms)選擇「下注」*從「下注」下注「下注」「下注」= 1極限1 比賽負荷(2.0ms)選擇「比賽」*從「比賽」內部加入「比賽卡」 SQL_ERROR:[SQLITE_ERROR] SQL錯誤或缺少數據庫(沒有這樣的列:下注:下劃線):「race_card_id」=「race_cards」。「id」WHERE「race_cards」。「id」= 1 AND(races.race_nbr = wagers.race_nbr) ActiveRecord :: JDBCError: .race_nbr)。它看起來像我需要得到Wager添加到聯接。 – Mutuelinvestor 2012-01-15 04:34:35