我想将部分应用迁移到Rails,因此我想为我的数据库生成schema.rb
。
为此,我简单地将Rails应用程序配置为指向有问题的数据库,但是我还有一堆必须完成的插入,它在数据库中作为各自表中的条目。
rake命令rake db:schema:dump
不会生成所需的插入。
有什么方法可以生成插入(代表数据库中的当前数据条目)?
我正在使用Rails 4.2.2和MySQL。
谢谢,
约翰
答案 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任务。它允许您从数据库中的现有数据创建种子数据文件。