先日書いたこれが動かなくなってしまい、よく調べていたらプライマリキー(つまりid)が被って追加できないよってことになってしまったみたいです。
確かに、関連を維持するためにidも含めてテストデータを登録していますので、sequenceの値がおかしくなっていた可能性があります。
そこで、seed.rbの最後に関連するテーブルに対してreset_pk_sequence!を呼ぶことでこの問題に対応しました。reset_pk_sequence!はDBがpostgresのときに使えます。
前回のParent、Childの例をそのまま使うとすると、
1klasses = [Parent, Child]
2klasses.each do |klass|
3 ApplicationRecord.connection.reset_pk_sequence!(klass.table_name)
4end
とすればOKです。