是否可以从数据库导出数据,或运行类似Person.find(1).to_seed的内容并将控制台的输出复制到seeds.rb文件中?
答案 0 :(得分:5)
是
这里有一颗宝石 - https://github.com/rroblak/seed_dump - 就是这样。
答案 1 :(得分:3)
尝试使用seed-fu。您可以为SeedFu::Writer提供一个CSV文件,该文件将用于生成seeds.rb“format”中的文件。当然,使用某些数据库工具,您需要将数据库表导出为CSV文件。
答案 2 :(得分:1)
不,不是真的。但是你可以编写可以做到这一点的代码!
策略是在YAML中转储数据库条目并在seed.rb中读取该YAML。 另一种策略是编写生成seed.rb的代码。
似乎是一种非常典型的需求。我没有遇到过宝石或其他已经做过的东西。
答案 3 :(得分:1)
我发现解决这个问题的一小段代码是来自Jesse Newland的rake任务:
http://snippets.dzone.com/posts/show/3393
namespace :db do
namespace :fixtures do
desc 'Create YAML test fixtures from data in an existing database. Defaults to development database. Set RAILS_ENV to override.'
task :dump => :environment do
sql = "SELECT * FROM %s"
skip_tables = ["schema_info"]
ActiveRecord::Base.establish_connection(:development)
(ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
i = "000"
File.open("test/fixtures/#{table_name}.yml", 'w') do |file|
data = ActiveRecord::Base.connection.select_all(sql % table_name)
file.write data.inject({}) { |hash, record|
hash["#{table_name}_#{i.succ!}"] = record
hash
}.to_yaml
end
end
end
end
end
在YAML中获取导出的灯具后,您可以运行一些正则表达式,以便为种子文件正确格式化它们。这可能是一个很好的代码片段,可用作构建导出种子文件的rake任务的基础。
答案 4 :(得分:0)
打开Rails控制台并使用此技巧:
puts name_of_your_.attributes.to_yaml