結論から書くと以下。
1)seed_dumpでDBからデータを抽出
2)db:seed用のrakeタスクを作成
3)1)で作成したファイルを指定し、データを挿入
FactoryBot(旧:FactoryGirl)では面倒くさい時、
開発用などデータが入っているDBのデータを、
そのまま利用したい時は、この方法が役立つ。
1)seed_dumpでDBからデータを抽出
インストール
gem 'seed_dump'
seed_dumpをデフォルトで使用するとdb/seeds.rbを上書きするので、
以下のように書き出し先を指定して、DBからseedファイルを作成する。
※seedsディレクトリは予め作成しておく。
$ bundle exec rake db:seed:dump FILE=db/seeds/20171212_all.rb
デフォルトだと、全テーブルを抽出するが
もちろん、抽出するモデルを指定したり、件数を指定することもできる。
詳細は以下。
2)db:seed用のrakeタスクを作成
やり方は下記のサイトさんのやり方をそのまま利用すればよい。
qiita.com
lib/tasks/seed.rakeを作成
Dir.glob(File.join(Rails.root, 'db', 'seeds', '*.rb')).each do |file| desc "Load the seed data from db/seeds/#{File.basename(file)}." task "db:seed:#{File.basename(file).gsub(/\..+$/, '')}" => :environment do load(file) end end
3)1)で作成したファイルを指定し、データを挿入
後はファイルを指定して、流すだけ。(注: [.rb]は不要)
$ bundle exec rake db:seed:20171212_all RAILS_ENV=test