Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

外部キー制約に絡んだエラーが出た。

HerokuにデプロイしたPFで自分の掲示板の一つを削除しようとしたらエラーが発生した。

どう対処したか??

まず以下のコマンドでHerokuのエラーの確認。

heroku logs --tail

そしたら以下のエラーを検知した。

validForeignKey (PG::ForeignKeyViolation: ERROR:  update or delete on table "boards" violates foreign key constraint on table "bookmarks"

どうやら外部キー制約に違反をしているらしい。

外部キー制約とは

簡単に説明すると、

「他のテーブルのデータに参照(依存)するようにカラムにつける制約」 という意味である。

掲示板を削除したらブックマークも消えるけど大丈夫??」 と記載されている感じだと思われる。

そのために掲示板のモデル部分に以下のコマンドを追加した。

board.rb

has_many :bookmarks, dependent: :destroy

dependent:destroyの役割

関連付けられたオブジェクトも同時にdestroyされる。

今回で言うと、掲示板を削除すればブックマークも削除できるようにした。

上記のことをして、エラーを解決させた。

参考

Herokuでのエラーログ確認方法 - Qiita

削除できない原因は外部キー制約だった。