2017-06-15 108 views
0

這是這個問題的一個輕微的擴展Rails的模型:Rails model that has both 'has_one' and 'has_many' but with some contraints既包括的has_many和HAS_ONE關係,與兩種模式有一個的has_many到HAS_MANY關係

在這裏,我想涉及兩個型號,每個的has_many的其他 - >我有一個在存儲外鍵的模型之間,允許「通過」關係。具體來說,我想涉及的對決和團隊,我想每個隊「HAS_ONE:current_matchup」

下面是我的模型相關的摘錄:

團隊:

has_many :matchup_teams 
has_many :matchups, through: :matchup_teams 

對決:

has_many :matchup_teams 
has_many :teams, through: :matchup_teams 

MatchupTeam:

belongs_to :matchup 
belongs_to :team 

我該怎麼做? 這裏是我當前的嘗試,這將導致一個錯誤:

模特隊:

has_one :current_matchup_team, -> { where(is_current: true) }, :class_name=> "MatchupTeam" 
has_one :current_matchup, through: :current_matchup_team, :class_name=>"Matchup" 

回答

0

這將是一個更好的形式給出,如果你使用的方法,而不是關聯的檢索current_matchup:

型號:

def current_matchup 
    matchups. where(is_current: true) 
end 
+0

好吧,我很樂意這樣做 - 我可以使用該方法在eager_load聲明?例如,user.teams.includes(:current_matchup)或類似的東西? –

+0

不幸的是,它不起作用,它必須是一個模型關係。 – Iob

+0

你在嘗試中遇到什麼錯誤? – Iob