Create seed file from data already in the database

32,027

Solution 1

There is a gem called seed_dump, which will do exactly what you want:

Solution 2

Not sure about any existing rake tasks, but you can try running something like this in the rails console & paste the results into your seeds.rb file

(warning: dirty & untested)

c = Category.all

c.each do |cat|
  puts "Category.create(:name => '#{cat.name}')"
end

Adjust for any additional fields you may have.

Hope this helps.

Solution 3

Old question, I have a new one based on @Brian's answer.

If you want to keep the entire row as is:

seedfile = File.open('db/seeds.rb', 'a')

c = Category.all

c.each do |cat|
  seedfile.write "Category.create(#{cat.attributes})\n"
end

seedfile.close

If you want to only write some attributes, change the write line to the following:

seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n"

Or, if you wish all the attributes except some, for example timestamps:

seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n"

Solution 4

I've used YamlDb to dump data from my development db and then load it up to another server. It dumps the data to a Yaml file, which will be used any time you want to use db:load to push it up to any other db server.

https://github.com/ludicast/yaml_db

Share:
32,027
swrobel
Author by

swrobel

Vagabond, Founder (LifeWork, TOTEM, StackCommerce), 🏄🏼‍♂️⛷🏂🚵🏼‍♂️🥾✈🌱based. More?

Updated on July 09, 2022

Comments

  • swrobel
    swrobel almost 2 years

    I'm using Rails 3.0.3 and have data for my "categories" table already in the database, but want to create a seed file from it. Is there any rake task that will generate the seeds.rb format for me from this table?

  • rcd
    rcd about 11 years
    I found the new Github home in case anyone is looking for it - github.com/zenprogrammer/seed_dump
  • streetlogics
    streetlogics about 10 years
    The RubyGems page links to github.com/rroblak/seed_dump currently (Feb. 8th, 2014). EDIT: I guess the above zenprogrammer link now redirects to the new one as well.
  • Jordan
    Jordan almost 10 years
    Works great!! rake db:seed:dump and your off and running --thanks.
  • Asnad Atta
    Asnad Atta over 9 years
    this is not working with associations can we also include id of the record?
  • MSC
    MSC over 5 years
    Very easy to use. However, it fails to preserve the serial ids on records - in other words the IDs you see in the origin DB may not end up being the same once rails db:seed has run on the destination database. It also doesn't sequence the create! blocks such that dependent records are created first. This means that you probably need to manually resequence your create! blocks so that rails db:seed doesn't choke on missing foreign keys: github.com/rroblak/seed_dump/issues/83.