2

먼저이 만들 듯 의미 :복수의 ActiveRecord`belongs_to`가 같은 클래스를 가리키는 것이 괜찮습니까? 에서, 두 팀 스포츠 이벤트를 연결에서

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 

: 나는 내가 활성 기록 모델에서 그를 연결 얼마나 고민하고 그러나

events 
    - id:integer 
    - integer:home_team_id 
    - integer:away_team_id 

teams 
    - integer:id 
    - string:name 

그게 최선의 해결책입니까?

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 연관을 생각했지만 2 개의 팀만 필요하기 때문에 2 개의 팀처럼 보이지만 두 팀은 하나의 이벤트에 속하지 않습니다.

event_teams 
    - integer:event_id 
    - integer:team_id 
    - boolean:is_home 

이러한 연관성을 활성 레코드로 만들기위한보다 의미 론적 방법이 있습니까? 아니면 이러한 솔루션 중 하나가 최선의 선택입니까?

감사합니다.

답변

2

같은 이벤트가 두 팀에 속하기 때문에 해결책은 괜찮습니다. 다형성 연관은 여러 모델이 발생할 수있는 경우에 적용 할 수 있습니다.

+0

확인해 주셔서 감사합니다. – ethyreal