ツイートを削除しようとしたら、こんなエラーが出た。
ActiveRecord::StatementInvalid in TweetsController#destroy
Mysql2::Error: Cannot delete or update a parent row: a foreign key constraint fails
僕はただツイートを削除したいだけなのに。。。
なぜエラーがでたのか
【結論】
tweetsテーブル
とcommentsテーブル
で外部キー制約を結んでいたため。
外部キーとして、tweet_id
があるのがわかります。
コメントは必ず何かしらのツイートに結びつきます。
勝手にツイートを削除すると、迷子のコメントが現れます!
これがエラーの正体です。
解決策
dependent: :destroy
を追記。
ツイートを削除すると同時に、そのツイートに結びついたコメントも削除します。
app/models/tweet.rb
class Tweet < ApplicationRecord
has_many :comments, dependent: :destroy
end
参考
ではまた!