1

많은 시합을하는 사용자 모델이 있습니다. 싸움은 사용자에게 속합니다.has_many, belongs_to association has_many 관련 모델에는 belongs_to associated_model에 두 개의 별칭 fk가 있습니다.

사용자 PK - challenger_id 및 challengee_id를 다시 참조하는 두 개의 외래 키가 시합 테이블에 있습니다.

트릭은 user_id = challenger_id 또는 challengee_id가있는 곳에서 경기를 반환하도록 사용자 모델에 has_many 연결을 작성하는 방법입니다.

+0

이 생각보다 간단했다 추측 : has_many :

나는 다음과 같이이 작업을 수행 할 것 싸움, : foreign_key => 'challenger_id 또는 challengee_id' – keruilin

답변

1

두 개의 분리 된 연결을 사용하고 모든 경기를 반환하는 방법을 만들어야한다고 생각합니다. 언젠가는 만받을 필요가 있습니다. @userchallenger 이었습니까?

class User < ActiveRecord::Base 
    has_many :fights_as_challenger, :foreign_key => :challenger_id, 
     :class_name => "Fight" 
    has_many :fights_as_challengee, :foreign_key => :challengee_id, 
     :class_name => "Fight" 

    def all_fights 
     self.fights_as_challenger + self.fights_as_challengee 
    end 
end