0

我是 Rails 的新手,具有 Java 背景。

我在多对多(通过第三个连接表)关联上遇到了一些麻烦。

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

在我的休息方法中,我将过去医生 ID 和患者 ID。要设置医生和患者连接,我使用

py = Physician.find(params[:physician_id])
pa = Patient.find(params[:patient_id])
py.patients<<pa

我的意思是,在这里,两个选择和一个插入对我来说似乎太昂贵了。反正只要触发一次插入,因为我已经知道医生和患者存在于数据库中。

在 hibernate 中,有一个 load() 函数可以创建加载模型的代理对象而不会影响 DB。

Physician py = session.load(1);
Patient pa = session.load(2);
AppointmentDao.save(new Appointment(py,pa));

感谢您的任何回答。以及关于 Rails 哲学的任何建议。

4

1 回答 1

2

你可以做Appointment.create physician_id: 1, parient_id: 2

于 2012-08-04T00:46:14.310 回答