2012-06-15 4 views
8

현재 두 모델이 있습니다 : UserProject입니다. User 모델에는 소유자, 계약자 및 클라이언트의 세 가지 유형의 사용자가 있습니다. 하나의 프로젝트에 여러 계약자를 지정하고 싶습니다. 그래서처럼 has_many :through 협회에 이것을 시도하고있다 :레일 has_many : 연결 테이블에 다른 열 이름이있는

Class User 
    has_many :assignments 
    has_many :projects, :through => :assignments 

Class Project 
    has_many :assignments 
    has_many :contractors, :through => :assignments 

Class Assignment 
    belongs_to :user 
    belongs_to :project 

내 문제는 assignments 테이블에 contractor_id를 사용하는 대신 user_id입니다.

assignments 테이블에는 현재 contractor_idproject_id 열이 있습니다. 대신에 user_id을 사용하면 모든 것이 작동하는 것처럼 보일 수 있지만 나중에 내보기에서 일이 꽤 지저분해질 수 있습니다.

어떻게하면됩니까?

답변

14

당신은 예를 들어, Assignment:foreign_key 옵션을 사용해야합니다 :

class Assignment 
    belongs_to :user, :foreign_key => :contractor_id 
    belongs_to :project 
+0

이 확실히, 하나 개의 방식으로 작동이 지금은 단지 인식하는 사용자 모델을하는 데 필요한'대신 user_id''의 contractor_id' 때 '@ user.projects'를 호출하십시오 –

+2

. 필요한 사용자 모델 : foreign_key => : has_many에 대한 contractor_id : 할당 –