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