on_delete
Railsでデータベースの外部キー制約を設定する際、on_deleteで親レコードが削除されたときの動作を制御できます。
オプション
on_deleteには:restrict、:nullify、:cascadeを指定できます。
:restrict
親レコードの削除を阻止
add_foreign_key "revisions", "users", column: "created_by_id", on_delete: :restrict
userに関連するrevisionsが存在する場合、そのuserの削除はエラーとなります。
:nullify
関連する外部キーをnullに設定
add_foreign_key "revisions", "users", column: "created_by_id", on_delete: :nullify
userが削除されると、関連するrevisionsのcreated_by_idがnullになります。
:cascade
関連レコードも連鎖削除
add_foreign_key "revisions", "users", column: "created_by_id", on_delete: :cascade
userが削除されると、関連するrevisionsも自動的に削除されます。
まとめ
| オプション | 動作 |
|---|---|
:restrict |
削除を阻止 |
:nullify |
外部キーをnullに |
:cascade |
関連レコードも削除 |