2015-11-25 106 views
0

醫師的has_many患者通過預約
患者的has_many醫生通過任命串聯列HAS_MANY通過關係

我怎樣才能讓約會名醫生的姓名和患者姓名的串聯自動在約會模式?

Physician.name = 'Joe Doctor' 
Patient.name = ' Sally Smith' 
Appointment.name = "#{Patient.name} with #{Physician.name}" 

這不是我們真實世界的使用,而是一個簡化的例子。謝謝。

回答

2

一個這樣做的方式,它是:

class Appointment 
    belongs_to :doctor 
    belongs_to :patient 

    before_create :set_default_name #optional it can be called imperatively 

    def set_default_name 
    if patient && doctor 
     self.name= "#{patient.name} with #{doctor.name}" 
    end 
    end 
end 

那每當您將patient添加到doctor.patients時,它應自動設置約會的名稱:

@doctor.patients << @patient 
@doctor.appointments.last.name # => "Dr Who with Mr Spock" 
+1

因爲「Spock先生的博士」讓我嗤之以鼻。 –

1

假設你有一個病人在每次預約一名醫生,你可以像你的約會模式定義一個方法:

def name 
    self.patient.name + ' with ' + self.physician.name 
end