2017-02-03 7 views
1

私は1つのユーザーモデルと1つのviewed_contractorモデルを持っています。私は顧客と契約者としてのユーザーモデルを扱っています。顧客は、それぞれのプロファイルを参照して多くの請負業者を見ることができます。多くの顧客がコントラクターを閲覧することができます。私はviewed_contractorにcustomer_idとcontractor_idを持っています。私はこの関係をhas_many throughとして扱いたい。徹底的にhas_many throughが可能ですか?Railsには同じモデルが多数あります

答えて

1

可能です。まず、お客様のViewedContractorモデルのbelongs_to関連のclass_nameオプションを指定し、その両方がUserクラスを参照するようにする必要があります。次に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

恐ろしい:)ありがとうございます! –

関連する問題