Create seed file from data already in the database
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.
swrobel
Vagabond, Founder (LifeWork, TOTEM, StackCommerce), 🏄🏼♂️⛷🏂🚵🏼♂️🥾✈🌱based. More?
Updated on July 09, 2022Comments
-
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 about 11 yearsI found the new Github home in case anyone is looking for it - github.com/zenprogrammer/seed_dump
-
streetlogics about 10 yearsThe 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 almost 10 yearsWorks great!!
rake db:seed:dump
and your off and running --thanks. -
Asnad Atta over 9 yearsthis is not working with associations can we also include id of the record?
-
MSC over 5 yearsVery 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.