私は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 の哲学に関するご提案もお待ちしております。