【Rails】外部キーを持つデータの削除する方法
現在プログラミングスクールに通い
70日間でWEBエンジニアになれるよう
勉強中です!
本日は外部キーを持つデータを削除する際の
方法について書きたいと思います。
◆エラー内容
何も設定せずに外部キーを持つデータを削除しようとすると
下記のようなエラーが起きるはずです。
Error: Cannot delete or update a parent row: a foreign key constraint fails
◆解決策
dependent: :destroyを外部キーを主キーと
する親モデルに記載すればOKです!
dependent: :destroyは「親モデルを削除する際に、
その親モデルに紐づく「子モデル」も一緒に削除できる」コードです。
◆サンプルコード
UserモデルとItemモデルが親子関係の場合
class User < ApplicationRecord
has_many :items, foreign_key: :user_id, dependent: :d
class Item < ApplicationRecord
belongs_to :user, optional: true
このように設定すれば外部キーを持つデータを消す際に
親モデルと小モデル両方削除してくれます。