2
在連接體育賽事兩隊,起初這似乎是有道理的:有多個ActiveRecord`belongs_to`指向同一個類可以嗎?
events
- id:integer
- integer:home_team_id
- integer:away_team_id
teams
- integer:id
- string:name
但是我對我將如何鏈接起來的活動記錄模式的困擾:
class Event
belongs_to :home_team, :class_name => 'Team', :foreign_key => "home_team_id"
belongs_to :away_team, :class_name => 'Team', :foreign_key => "away_team_id"
end
這是最好的解決方案嗎?
在對similar question的回答中,我指出了單表繼承,後來發現了多態關聯。這兩者似乎都不適合這個協會。也許我在看這個錯誤,但是我認爲沒有必要將一個團隊劃分爲主隊和客隊,因爲區別只在於比賽的場地。如果我確實使用單表繼承,我不希望每個團隊都屬於某個事件,那麼這個工作會如何?
# app/models/event.rb
class Event < ActiveRecord::Base
belongs_to :home_team
belongs_to :away_team
end
# app/models/team.rb
class Team < ActiveRecord::Base
has_many :teams
end
# app/models/home_team.rb
class HomeTeam < Team
end
# app/models/away_team.rb
class AwayTeam < Team
end
這似乎只是太多的工作,我想實現。
我還想過關於has_many通過關聯,但似乎兩個,因爲我只會需要兩個團隊,但這兩個團隊不屬於任何一個事件。
event_teams
- integer:event_id
- integer:team_id
- boolean:is_home
有沒有更清晰的語義方式來使這些關聯在活動記錄中?還是其中一種解決方案是最佳選擇?
謝謝
感謝您的確認! – ethyreal 2010-03-28 22:25:28