30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

テーブルにデータをID1から登録する

こんにちは、ぐっちと申します。

カテゴリーデータ用のSEEDファイルが完成し、意気揚々としていた所チームメンバーから「とても良いのですが、2回目以降SEEDファイルを実行した際に、IDが変わってしまうので他のテーブルデータと齟齬が生じてしまいます。どうにかなりませんか?」と言われました。

確かに2回目以降実行されても良い様に、ファイルの頭に

Category.delete_all

を記述していたのですが、IDまでは頭がまわりませんでした。

 

色々調べた所、SQLで ALTER TABLE `テーブル名` auto_increment = 1; を実行する事で、auto_increment 機能がリセットされIDが1から登録される様になると分かりました。

しかし、毎回ターミナルでコマンドを打つのも煩わしいので、何かないかさらに調べると、ActiveRecord::Base.connection.execute というActiveRecordで生SQLを使えるメソッドがある事が分かり

Category.delete_all
ActiveRecord::Base.connection.execute "ALTER TABLE `categories` auto_increment = 1"

を記述し、何度SEEDファイルを実行してもテーブルの内容が変わらない様にする事が出来ました。

 

今回も便利なメソッドがある事が分かりまた1つ勉強になりました。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169