2017-02-03 2 views
1

하나의 사용자 모델과 하나의 viewed_contractor 모델이 있습니다. 나는 고객 및 계약자로서 사용자 모델을 다루고있다. 고객은 각각의 프로파일을 방문하여 많은 계약자를 볼 수 있습니다. 많은 고객이 계약자를 볼 수 있습니다. 내 viewed_contractor에 customer_id 및 contractor_id가 있습니다. 나는이 관계를 has_many through로 처리하려고합니다. 가능한 철저한 has_many 통해 가능합니까?레일즈는 동일 모델을 통해 여러 개가 있습니다

답변

1

가능합니다. 먼저 User 클래스를 참조하여 ViewedContractor 모델의 belongs_to 연결에 class_name 옵션을 지정해야합니다. 그런 다음 User 모델에서 has_many through: 관계를 지정할 수 있습니다. 이 같은

뭔가 작업을해야합니다 :

# viewed_contractor.rb 
class ViewedContractor < ActiveRecord::Base 
    belongs_to :contractor, class_name: 'User', foreign_key: :contractor_id 
    belongs_to :customer, class_name: 'User', foreign_key: :customer_id 
end 

# user.rb 
class User < ActiveRecord::Base 
    has_many :viewed_contractors_as_contractor, class_name: 'ViewedContractor', foreign_key: :contractor_id 
    has_many :viewed_contractors_as_customer, class_name: 'ViewedContractor', foreign_key: :customer_id 

    has_many :visited_contractors, through: :viewed_contractors_as_customer, source: :contractor 
    has_many :visited_customers, through: :viewed_contractors_as_contractor, source: :customer 
end 
+0

신난다 :) 감사합니다! –