Edited at

[Rails]本番環境でWe're sorry, but something went wrongのエラーが出る。


はじめに

本番環境にて投稿したデータを削除しようとした際このようなエラーが出ました。



ローカルではどのようなエラーが出るか確認したところ、


このようなエラーが出た為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
 以下略


まとめ

あまり見慣れないエラーだったので、少々焦りました。機能実装の際はコピペだけでなく、なぜこの記述が必要なのか理解する事も大事ですね。

ローカルでの動作確認も怠っていたので、次からはしっかり確認するように気をつけていこうと思います。