【 Rails 】 $ rake db:setup した後で、別の seed データを DB に新たに追加したいときは
development 環境で $ rake db:setup
した後で、別の seed データを DB に追加したいときがある。
db/fixtures/テーブル名.yml
に seed データを入力した後、再度 $ rake db:setup
を実行してもいいのだが、既に手動で入力しているデータがあった場合、 $ rake db:setup
を実行してしまうと、手動で入力したデータがリフレッシュされてしまう。
手動で入力したデータを生かしつつ、新たに別のデータを DB に追加したいときは、以下のようにする。
lib/tasks/
ディレクトリに、適当な名前の rake task
を作成する(ここでは仮に lib/tasks/interns.rake
としておく)。
例えば reports データを追加したい場合は、 lib/tasks/interns.rake
に intern:import_reports
を作成して、 db/fixtures/reports.yml
に seed データを入力する。その後、
$ bundle exec rake intern:import_reports
と実行すれば、 seed データが DB に追加される。
※ DB に SQLite を使っていた場合、 rake コマンドの実行の前に、一旦 Rails を停止しておかないといけないかも。
※ ちなみに、この方法は production 環境でも使える。 production 環境で追加データを挿入したくなったときには便利かも。