この図のような関連性で外部キー制約を表現するには
class CreateProjects < ActiveRecord::Migration
def change
create_table :projects do |t|
t.references :company
t.timestamps null: false
end
end
end
と書けばよさそうですが、これでは外部キー制約になりません。foreign_key: true
を付ける必要があります。
class CreateProjects < ActiveRecord::Migration
def change
create_table :projects do |t|
t.references :company, foreign_key: true
t.timestamps null: false
end
end
end
また次のような同じモデルを複数カラムから参照するような関連性でもreferences
は使えません。
こうしたケースでは、add_foreign_key
を使います。
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.references :sender
t.references :recipient
t.timestamps null: false
end
add_foreign_key :messages, :users, column: :sender_id
add_foreign_key :messages, :users, column: :recipient_id
end
end