Rails ActiveRecord相当于Hibernate load()?

时间:2012-08-03 23:36:41

标签: java ruby-on-rails ruby ruby-on-rails-3 activerecord

我是来自Java背景的Rails的新手。

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

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

我的意思是,在这里,两个选择和一个插入对我来说似乎过于夸张。 无论如何只是触发一个插入,因为我已经知道db中存在医生和患者。

在hibernate中,有load()函数可以创建加载模型的代理对象而不需要命中DB。

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

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

1 个答案:

答案 0 :(得分:2)

您可以Appointment.create physician_id: 1, parient_id: 2