Is there a way to export an ActiveRecord object in seeds.rb?

Is it possible to export data from a database or run something like Person.find (1) .to_seed and copy the output from the console to the seeds.rb file?

+6
ruby-on-rails activerecord
source share
5 answers

Yes.

Here's a gem - https://github.com/rroblak/seed_dump - does just that.

+4
source share

Try using seed-fu . You can give SeedFu :: Writer a CSV file that will be used to generate the seeds.rb file. Of course, using some kind of database tool, you will need to export the database table to a CSV file.

+3
source share

No, not at all. But you can write code that could do this!

The strategy is to flush records in the database in YAML and read YAML in seed.rb file. Another strategy is of course to write the code that seed.rb generates.

It seems to be a very typical need. I havent stumbled upon a gem or something that already does this.

+2
source share

A good piece of code I found to solve this problem is the rake task from Jesse Newland:

http://snippets.dzone.com/posts/show/3393

namespace :db do namespace :fixtures do desc 'Create YAML test fixtures from data in an existing database. Defaults to development database. Set RAILS_ENV to override.' task :dump => :environment do sql = "SELECT * FROM %s" skip_tables = ["schema_info"] ActiveRecord::Base.establish_connection(:development) (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name| i = "000" File.open("test/fixtures/#{table_name}.yml", 'w') do |file| data = ActiveRecord::Base.connection.select_all(sql % table_name) file.write data.inject({}) { |hash, record| hash["#{table_name}_#{i.succ!}"] = record hash }.to_yaml end end end end end 

After you get the exported fixtures in YAML, you can simply run some regular expressions to format them correctly for the seed file. This would probably be a good piece of code to use as the basis for building a rake task for exporting a seed file.

+1
source share

Open the Rails console and use this trick:

 puts name_of_your_.attributes.to_yaml 
0
source share

All Articles