t.referencesとforeign_key: true

 テーブルを作成する際、外部キー周りの設定でt.referencesとforeign_key: trueが何をしてくれるのか・してくれないのか曖昧だったので調べました。

 

 t.references
  • 参照モデル名_idというカラム名で参照モデルのidと紐付けてくれる
  • これだけだと参照にないidでも登録できてしまう

 
foreign_key: :true

  • 外部キー制約をつけてくれる
  • dependent: :destroyつけないと親レコード消せない
  • indexが自動でつくので書かなくていい
  • 親レコードにない値は参照カラムに登録できない
  • 値がNULLでも挿入できてしまうため、別途null: :falseつける必要がある

 

感想その他

細かく把握しておかないといけないなと思いました。