【Rails】外部キーを持つデータの削除する方法

f:id:ume1017:20200912203116j:plain

 

 現在プログラミングスクールに通い

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

 

このように設定すれば外部キーを持つデータを消す際に

親モデルと小モデル両方削除してくれます。