TL;DR
ENV['FIXTURES'] = 'hoge,fuga,bar'
と並び順を指定してから投入しているが、あまり良いやり方ではなさそうなので、なにか良い方法があれば教えてください 🙏
遭遇した問題
今作っているアプリケーションをHerokuで開発している。 Review Appsで動作を確認したいので、 db:fixtures:load
を読みだしたところ下記のようなエラーが出た。
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR: insert or update on table "hoge" violates foreign key constraint "fk\_rails\_xxxxx"
Rails のバージョンは 5.2.3 。
原因
テーブル fuga が hoge に対して外部キー制約を持っていたが、 hoge より先に fuga のデータを作ろうとしてしまいエラーになっているようだった。
Use SET CONSTRAINTS
for disable_referential_integrity
without superuser privileges (take 2) がRevertされており、現状解決策はなさそう?
やったこと
この辺を見て、ENV['FIXTURES'] = 'hoge,fuga,bar'
と投入順を指定することで対処した。ただこれだと fixtures/*.yml
の増減に引っ張られてしまうので、微妙だと思っている。
なにか他に良い方法があれば教えて下さい 🙏
Top comments (0)