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