通过关系连接 rails has_many 中的列

Concatenate columns in rails has_many through relationship

医师has_many 预约患者
患者 has_many 预约医生

如何在预约模型中自动使预约名称成为医生姓名和患者姓名的串联?

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

这不是我们的真实世界使用,而是一个简化的示例。谢谢

假设您在每次预约中有一名患者和一名医生,您可以在预约模型中定义一个方法,例如:

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

一种方法是:

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"