ActiveRecordのid自動採番を設定し直す
(ActiveRecordに限った話ではないんですが)
環境
postgresql (9.2.3)
activerecord (4.0.0.beta1)
概要
seed.rbだとかで訳あって、本来ならインクリメントされていくidに対して数値を指定してレコードを作成した場合、のちのちでidが被ってしまうのでそれを避けるために、シーケンスを降り直す方法を書く。
# db/seed.rb Word.create(id: 1) Word.create(id: 2) Word.create(id: 3) . . . connection = ActiveRecord::Base.connection(); connection.execute("select setval('word_id_seq',(select max(id) from words))")
$ rails console Loading development environment (Rails 4.0.0.beta1) [1] pry(main)> Word.create # ←idが最大値を振ってくれる