はじめに
本番環境にて投稿したデータを削除しようとした際このようなエラーが出ました。
ローカルではどのようなエラーが出るか確認したところ、
このようなエラーが出た為DBの問題か?と考えましたがどうやらいいね機能に原因があるらしく、いいねがされてる投稿を削除をする事が出来なくなっていました。
なぜこのようなエラーが出るか?
この記事を参考にした所
https://qiita.com/Ushinji/items/650fa295a3054d2fe582
どうやら外部キー制約のついたカラムを削除する必要があるらしく、dependent: :destroy
を設定する必要があるみたいです。今回はvideo.rb
に記述漏れがあったのでその記述を追加しました。
記述例
video.rb
class Video < ApplicationRecord
mount_uploader :image, VideoUploader
belongs_to :user
has_many :likes, dependent: :destroy
has_many :liked_users, through: :likes, source: :user
has_many :comments
end
user.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :videos, dependent: :destroy
has_many :likes, dependent: :destroy
has_many :liked_videos, through: :likes, source: :video
以下略
まとめ
あまり見慣れないエラーだったので、少々焦りました。機能実装の際はコピペだけでなく、なぜこの記述が必要なのか理解する事も大事ですね。
ローカルでの動作確認も怠っていたので、次からはしっかり確認するように気をつけていこうと思います。