rails db:seed
はマスターデータ投入でちょっと面倒だった
マスターデータは初回投入後もちょいちょい追加することがある。
rails db:seed
は差分更新みたいなことはできないらしい。(seed_fuとか使わない限り)
rails db:migrate:reset
で全削除=>再登録はやりたくない。
rails db:migrate
を使えばいい
Railsの初期データを投入する方法を参考にさせてもらった。
rails db:rollback
でやり直したかったので、up
とdown
で実装してみた。
change
だとロールバック時にデータ削除ではなく、もう一度挿入されてしまう。
db/migrate/xxxxxxxxx_insert_hoge.rb
class InsertHoge < ActiveRecord::Migration[6.0]
def insert_data
[
{ name: 'ウルトラマン', voice: 'duwa' },
{ name: 'バルタン星人', voice: 'fowfowfow' },
]
end
def up
insert_data.each do |d|
Tsuburaya::Character.create(d)
end
end
def down
insert_data.each do |d|
Tsuburaya::Character.find_by(name: d[:name]).delete
end
end