2010年9月27日月曜日

id以外の項目をprimaryにし、関連を設定する方法



環境:2.3.8


railsでは、primaryキーはデフォルトidを使いますが、仕様上、別の項目をprimaryにしたいときがあります。


その場合のmodelの設定例です。


[Acceptテーブル] (1対多) [Patientテーブル] という関連で、


現在、patient.idで関連付けられていたものを、patient.patient_noに変えます。


あらかじめ、両テーブルに項目patient_noは追加されているものとします。


また、Acceptテーブルから、Patientテーブルを取る場合のみを想定しています。



class Accept < ActiveRecord::Base
# Patientテーブルへ、patient_noをキーにリレーションを設定する
belongs_to :patient, :foreign_key => 'patient_no'
end

class Patient < ActiveRecord::Base
# Patientテーブルの主キーはpatient_noとする
set_primary_key :patient_no
end


※PatientテーブルからAcceptテーブルを取りたい時は、has_manyの指定が必要です。


このあと、動作がおかしくて悩んでいた所、controllerで、Patient.find(@accept.patient_id)などと記述している事に気づかず、1時間ちょっとハマってました><;





0 件のコメント:

コメントを投稿