2017-11-03 2 views
0

Ich habe ein Consultation Modell, das eine post_consultant und eine consultant hat. Sowohl post_consultant als auch consultant sind Verweise auf das Modell Employee. So könnte man sagen:Rails Association: 2 Vorkommen des gleichen Modells

Modell

Class Consultation < ActiveRecord::Base 
    has_one :employee # for consultant 
    has_one :employee # for post_consultant 
end 

Migration

create_table "consultations", force: :cascade do |t| 
    t.boolean "showed_up" 
    t.boolean "signed_up" 
    t.integer "client_id" 
    t.integer "consultant_id" 
    t.integer "post_consultant_id" 
end 

Wie soll ich das schreiben soll?


Correct Modell:

class Consultation < ActiveRecord::Base 
    belongs_to :consultant, class_name: "Employee", foreign_key: "consultant_id" 
    belongs_to :post_consultant, class_name: "Employee", foreign_key: "post_consultant_id" 
end 
+0

post_consultant und berater ist ein modell? – krishnar

+0

Welcher Fremdschlüssel für post_consultant und Berater? – krishnar

+0

nur Mitarbeiter ist ein Modell –

Antwort

3
Class Consultation < ActiveRecord::Base 
    belongs_to :consultant, :class_name => "Employee", :foreign_key=> "consultant_id", dependent: :destroy 
    belongs_to :post_consultant, :class_name=>"Employee", :foreign_key=> "post_consultant_id", dependent: :destroy 
end 
+0

ist es einfach seltsam, wenn ich versuche: 'c = Consultation.new'. "e = Employee.first". Und dann versuchen Sie 'c.consultant = e' Ich sehe den folgenden Fehler:' ActiveModel :: MissingAttributeError: kann das unbekannte Attribut 'consultant_id'' nicht schreiben –

+0

Bitte überprüfen Sie, ob Sie ein Feld namens consultant_id und post_consultant_id Spalte in der Tabelle consultations in haben Schema –

+0

Ich habe beide in der Sprechstunde –

0

können Sie mehrere Beziehung definieren, um gleiche Modell bezieht.

Class Consultation < ActiveRecord::Base 
    has_one :consultant, class_name: 'Employee', foreign_key: :consultant_id 
    has_one :post_consultant, class_name: 'Employee', foreign_key: :post_consultant_id 
end 

Anmerkung: Erwähnung je nachdem, was Fremdschlüssel Sie u für jede Assoziation verwenden, sind oben mit Syntax.

+0

Bitte beachten Sie den Kommentar auf Antwort oben –

Verwandte Themen