我是 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 哲学的任何建议。