2017-03-19 13 views
1

私は予定表から生成された外部キーが患者医師Customedのテーブルの主キー

patients table 

create_table :patients, primary_key: :pat_id, id: :string do |t| 
    t.string :name 
end 



physicians table 

create_table :physicians, primary_key: :phys_id, id: :string do |t| 
    t.string :name 
end 


appointment table 

create_table :appointments, id:false do |t| 
    t.belongs_to :patient, primary_key: :pat_id, foreign_key: :pat_id, index: true 
    t.belongs_to :physician, primary_key: :phys, foreign_key: :pat_id, index: true 
    t.datetime :appointment_date 
end 

以下のコードでのテーブルにマッピングされるかどうかを知りたい、助けを必要としてください予定用テーブルが、私はpatient_idphysician_id代わりのpat_idを参照してください生成され、 phys_id。好奇心 Amが、これはマップまでにphys_idにpat_idphysicians_idをpatients_idますしてください?

答えて

0

belongs_toテーブル定義は、alias for referencesです。

代わりにt.belongs_to :patを使用してください。

+0

お返事ありがとうございますが、TableDefinitionの** belongs_toが意味することを理解できません。参照の別名です** –

+0

さらに教えてください。 RoR @ Shalev Shalitを始めたばかりなので、私は本当に理解できます。 –

+0

はい、参照(/ belongs_to)はテーブルの新しい列を作成する際に使用する関数です。それが行う唯一のことは、最後に** _ id **を持つ新しい**整数**列を作成することです。 '@ base.add_column(@table_name、"#{col} _id "、:整数、オプション)' –

関連する問題