5

रेल संघों गाइड से के माध्यम से, वे एक बहुत-से-अनेक has_many का उपयोग करते हुए रिश्ते को प्रदर्शितजोड़ा जा रहा है और एक has_many से निकालने: तो की तरह के माध्यम से: संबंध

class Physician < ActiveRecord::Base 
    has_many :appointments 
    has_many :patients, :through => :appointments 
end 

class Appointment < ActiveRecord::Base 
    belongs_to :physician 
    belongs_to :patient 
end 

class Patient < ActiveRecord::Base 
    has_many :appointments 
    has_many :physicians, :through => :appointments 
end 

मैं कैसे बना सकते हैं और नियुक्तियों को दूर करेंगे?

अगर मुझे @physician मिल गया है, तो क्या मैं नियुक्ति बनाने के लिए निम्न की तरह कुछ लिखता हूं?

@patient = @physician.patients.new params[:patient] 
@physician.patients << @patient 
@patient.save # Is this line needed? 

हटाने या नष्ट करने के लिए कोड के बारे में क्या? साथ ही, अगर नियुक्ति तालिका में कोई रोगी मौजूद नहीं है तो क्या यह नष्ट हो जाएगा?

उत्तर

7

एक नियुक्ति बनाने के अपने कोड में, दूसरी पंक्ति की जरूरत है नहीं, और #build बजाय विधि #new का उपयोग कर:

@patient = @physician.patients.build params[:patient] 
@patient.save # yes, it worked 

एक नियुक्ति रिकॉर्ड को नष्ट करने के लिए आप बस यह पता लगाना और नष्ट कर सकता है:

has_many करने के लिए निर्भरता की स्थापना:

@appo = @physician.appointments.find(1) 
@appo.destroy 

आप एक मरीज को नष्ट करने के साथ-साथ नियुक्ति रिकॉर्ड को नष्ट करना चाहते हैं, तो आप जोड़ने की जरूरत

class Patient < ActiveRecord::Base 
    has_many :appointments 
    has_many :physicians, :through => :appointments, :dependency => :destroy 
end 
+1

धन्यवाद, मुझे लगता है कि नियुक्ति को हटाने से चिकित्सक को रोगी से भी हटा दिया जाएगा और इसके विपरीत? – dteoh

+1

नहीं, यह तब तक नहीं होगा जब तक आप 'depend निर्भरता =>:' '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – Kevin

+0

वास्तव में 'निर्भरता' सेटिंग मॉडल में पहले_destroy हुक जोड़ती है। इसके बिना मॉडल रिकॉर्ड को नष्ट करते समय कोई अन्य मॉडल प्रभावित नहीं होगा। – Kevin

संबंधित मुद्दे