2013-11-23 7 views
0

나는 다음과 같은 설정이 : 컬럼에루비와 여러 외래 키를

matchdayshome_team_idvisitor_team_id 라는 하나와 team 테이블이라고합니다.

class Match < ActiveRecord::Base 

    belongs_to :home_team, class_name: "Team", foreign_key: :home_team_id 
    belongs_to :visitor_team, class_name: "Team", foreign_key: :visitor_team_id 
    belongs_to :matchday 

    validates :home_team, presence: true 
    validates :visitor_team, presence: true 
end 

을 그리고 같은 팀 모델 :

내 일치 모델은 다음과 같습니다

class Team < ActiveRecord::Base 
    has_many :matches 
    has_many :player 
end 

는 지금은 (적어도 나를 위해) 까다로운 얻고있다. team.matches에 전화하여 팀의 모든 경기를 확인할 수 있기를 바랍니다. 모든 팀마다 홈 경기가 있고 길에서도 게임이 있기 때문입니다.

현재 일치 테이블에서 team_id 열을 찾고 있기 때문에 ActiveRecord::StatementInvalid 오류가 발생합니다.

답변

0

그래서 내가 올바르게 이해한다면, 현재 팀이 경기하고있는 모든 게임을 반환하는 방법 일뿐입니다. 이 트릭을해야합니다 :

class Team < ActiveRecord::Base 
    has_many :player 

    def matches 
    Team.where(home_team_id => self.id, foreign_key => self.id) 

    # This line will also work if you want to try it out. 
    # Team.where("home_team_id = ?", self.id).where("foreign_key = ?", self.id) 
    end 
end 

해피 코딩!

+0

'집 = Match.where (: home_team_id => self.id) 방문자 = Match.where는 (: visitor_team_id => self.id) 귀국 + visitor' 그것을했다. 그러나 그것은 나에게 다소 이상하게 느낀다. –

관련 문제