从数据库中已有的数据创建种子文件

发布于 2024-10-06 21:45:14 字数 91 浏览 2 评论 0原文

我正在使用 Rails 3.0.3,并且数据库中已有“类别”表的数据,但想从中创建一个种子文件。是否有任何 rake 任务可以从该表中为我生成 seeds.rb 格式?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

入画浅相思 2024-10-13 21:45:14

有一个名为 seed_dump 的 gem,它将完全满足您的需求:

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

若有似无的小暗淡 2024-10-13 21:45:14

不确定是否有任何现有的 rake 任务,但您可以尝试在 Rails 控制台中运行类似的任务将结果粘贴到您的 seeds.rb 文件中

警告:脏且未经测试)

c = Category.all

c.each do |cat|
  puts "Category.create(:name => '#{cat.name}')"
end

根据您可能拥有的任何其他字段进行调整。

希望这有帮助。

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.

遗失的美好 2024-10-13 21:45:14

老问题,我根据@Brian 的回答提出了一个新问题。

如果您想保持整行不变:

seedfile = File.open('db/seeds.rb', 'a')

c = Category.all

c.each do |cat|
  seedfile.write "Category.create(#{cat.attributes})\n"
end

seedfile.close

如果您只想写入一些属性,请将写入行更改为以下内容:

seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n"

或者,如果您希望除了某些属性(例如时间戳)之外的所有属性:

seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n"

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"
Smile简单爱 2024-10-13 21:45:14

我使用 YamlDb 从我的开发数据库转储数据,然后将其加载到另一台服务器。它将数据转储到 Yaml 文件中,每当您想要使用 db:load 将其推送到任何其他数据库服务器时,都会使用该文件。

https://github.com/ludicast/yaml_db

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文