Rails 4.2:如何使用插入生成schema.rb?

时间:2015-07-06 13:53:15

标签: ruby-on-rails database

我想将部分应用迁移到Rails,因此我想为我的数据库生成schema.rb

为此,我简单地将Rails应用程序配置为指向有问题的数据库,但是我还有一堆必须完成的插入,它在数据库中作为各自表中的条目。

rake命令rake db:schema:dump不会生成所需的插入。

有什么方法可以生成插入(代表数据库中的当前数据条目)?

我正在使用Rails 4.2.2和MySQL。

谢谢,

约翰

2 个答案:

答案 0 :(得分:2)

db文件夹中,应该有seeds.rb。这是用于使用基本数据“种子化”数据库的文件:

country_list = [
  [ "Germany", 81831000 ],
  [ "France", 65447374 ],
  [ "Belgium", 10839905 ],
  [ "Netherlands", 16680000 ]
]

country_list.each do |name, population|
  Country.create( name: name, population: population )
end

您可以运行rake db:seed来运行此功能。

如果您需要将数据迁移到种子文件,请尝试将其添加到lib/tasks/export.rake

namespace :export do
  desc "Prints Country.all in a seeds.rb way."
  task :seeds_format => :environment do
    Country.order(:id).all.each do |country|
      puts "Country.create(#{country.serializable_hash.delete_if {|key, value| ['created_at','updated_at','id'].include?(key)}.to_s.gsub(/[{}]/,'')})"
    end
  end
end

显然,您需要为要保留的每个表更改此设置,但请使用rake export:seeds_format

运行此表

答案 1 :(得分:1)

模式文件是数据库结构的规范来源,而不是其内容(因此它不会记录INSERT等。)

要将数据库的内容记录为Rails项目,您可能希望将它们转储到seeds.rb,这样您就可以使用rake db:seed加载它们。

seed_dump库对此非常有用:

  

Seed Dump是一个Rails 4插件,它添加了一个名为db:seed:dump的rake任务。

     

它允许您从数据库中的现有数据创建种子数据文件。