2017-02-03 5 views
1

Ich habe ein Benutzermodell und ein viewed_contractor Modell. Ich behandle Benutzermodell als Kunde und Auftragnehmer. Der Kunde kann viele Auftragnehmer durch den Besuch ihres jeweiligen Profils zu sehen. Contractor kann von vielen Kunden angesehen werden. Ich habe customer_id und contractor_id in meinem viewed_contractor. Ich möchte mit dieser Beziehung wie has_many umgehen. Ist es möglich, gründlich durch viele?Schienen hat viele durch mit demselben Modell

Antwort

1

Es ist möglich. Zuerst müssen Sie die class_name Option für die belongs_to Assoziationen in Ihrem ViewedContractor Modell angeben, so dass sie sich beide auf Ihre User Klasse beziehen. Dann könnten Sie die has_many through: Relationen in Ihrem User Modell angeben.

So etwas sollte funktionieren:

# 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

Super :) Danke! –

Verwandte Themen