t.referencesとforeign_key: true
テーブルを作成する際、外部キー周りの設定でt.referencesとforeign_key: trueが何をしてくれるのか・してくれないのか曖昧だったので調べました。
t.references
- 参照モデル名_idというカラム名で参照モデルのidと紐付けてくれる
- これだけだと参照にないidでも登録できてしまう
foreign_key: :true
- 外部キー制約をつけてくれる
- dependent: :destroyつけないと親レコード消せない
- indexが自動でつくので書かなくていい
- 親レコードにない値は参照カラムに登録できない
- 値がNULLでも挿入できてしまうため、別途null: :falseつける必要がある
感想その他
細かく把握しておかないといけないなと思いました。