0

私はJavaのバックグラウンドからRailsを初めて使用します。

多対多 (3 番目の結合テーブルを介した) 関連付けで問題があります。

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

つまり、ここで 2 つの select と 1 つの insert はコストが高すぎるように思えます。私はすでに医師と患者がデータベースに存在することを知っているので、とにかく1つの挿入をトリガーするだけですか.

Hibernate には、ロードされたモデルのプロキシ オブジェクトを DB にヒットせずに作成する load() 関数があります。

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 に答える