Create seed file from data already in the database

后端 未结 4 496
再見小時候
再見小時候 2020-12-07 20:06

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 t

相关标签:
4条回答
  • 2020-12-07 20:41

    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.

    0 讨论(0)
  • 2020-12-07 20:43

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

    • https://github.com/rroblak/seed_dump
    • http://rubygems.org/gems/seed_dump
    0 讨论(0)
  • 2020-12-07 20:43

    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"
    
    0 讨论(0)
  • 2020-12-07 20:58

    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

    0 讨论(0)
提交回复
热议问题