環境:2.3.8
前回、id以外の項目をprimaryにし、関連を設定する方法、という記事を書きましたが、仕様をミスっていたので改めて書きますします。
AテーブルからBテーブルに接続したいとき、通常railsでは、「id」というデフォルトの項目を使いますが、別の項目で接続したいときの方法です。
[Acceptテーブル] (1対多) [Patientテーブル] という関連で、patient_noで接続します。
あらかじめ、両テーブルに項目patient_noは追加されているものとします。
class Accept < ActiveRecord::Base
# Patientテーブルへ、patient_noをキーにリレーションを設定する
belongs_to :patient, :class_name => 'Patient', :primary_key => 'patient_no', :foreign_key => 'patient_no'
end
また、AcceptsControllerを見直し、下記のようなfindがあれば修正する。
(環境により適宜になります)
@patient = Patient.find(@accept.id)
↓
@patient = Patient.find(:first, :conditions => ["patient_no = ?", @accept.patient_no])
んー、わかれば簡単なんだけど、最初はなかなか難しいです(^^;
0 件のコメント:
コメントを投稿