kansiho's memo

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

今あるデータベースからseed-fu gemを利用してfixtureデータを作る

今あるデータベースからseed-fu gemを利用してfixtureデータを作る。 カテゴリの名前の取り込みなどに使うと便利。

rails consoleで

SeedFu::Writer.write('db/fixtures/user.rb',{ class_name: ‘User'}) do |writer|
  User.all.each do |user|
    writer << user.attributes 
  end
end

attributes ないと、 < obj > 型になってしまうので注意!!

また、created_at と updated_at はattributesから除きたいので、

www.tom08.net

を参考に

# lib/tasks/seed_fu_generator.rake

namespace :seed_fu_generator do
  desc 'generate seed data from databases (env table_name is required).'
  task table_name: :environment do
    SeedFu::Writer.write("db/fixtures/#{Rails.env}/seed_fu_generator_#{ENV['TABLE_NAME']}.rb", class_name: ENV['TABLE_NAME'].classify) do |writer|
      ENV['TABLE_NAME'].classify.constantize.order(:id).find_each do |object|
        writer << object.attributes.except("created_at", "updated_at")
      end
    end
  end
end
実行するには下記のようにテーブル名を指定します。

% rake seed_fu_generator:table_name TABLE_NAME=admin_users