ruby-on-rails - 有没有办法拥有多个 seeds.rb 文件?任何类型的 'versioning' 用于种子数据?

标签 ruby-on-rails ruby rake

我们需要为一些新添加的表添加更多种子数据到我们的 Rails 项目的“版本 100”。

但是,如果我们简单地将它添加到seeds.rb 中并重新运行rake db:seed 命令,它当然会重新添加原始种子数据,复制它。

因此,如果您已经将种子数据添加到 seeds.rb 中,例如,TableOne ...

我们如何在开发的后期阶段为 TableTwo 和 TableThree 增量添加种子数据?

我希望我可以简单地创建一个新的 seeds_two.rb 文件并运行 rake db:seeds_two 但这给出了一个错误 不知道如何构建任务“db:seeds_two”

所以看起来只能使用“seeds.rb”。

人们如何维护对种子数据的增量添加?

最佳答案

您可以重新使用seed 任务,但将其设为idempotent .

要使种子幂等,只需在执行命令之前检查条件是否存在。一个例子:你想创建一个新的管理员用户吗?

User.find_or_create_by_username(:username => "admin")

代替

User.create(:username => "admin")

但是,seed 应该用于在创建项目时填充您的数据库。如果您想在应用程序的生命周期内执行复杂的数据播种,只需创建一个新的 rake 任务,执行它然后将其删除。

关于ruby-on-rails - 有没有办法拥有多个 seeds.rb 文件?任何类型的 'versioning' 用于种子数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7130334/

相关文章:

javascript - 如何使用 format.js 返回错误消息并更新我的 UI?

css - 自定义字体不显示

ruby - 如何读取列表(列)而不是行中的 cucumber 表

namespaces - Rake 命名空间别名

ruby-on-rails - 佣金 Assets 之间的差异 :precompile:all and rake assets:precompile:primary

ruby-on-rails - 如何使用载波从外部将文件保存到模型?

javascript - Rails - 使用 javascript 禁用 select_tag

ruby-on-rails - parallel_tests gem 是否按顺序运行您的测试套件?

ruby - 设置 :linked_files and set :linked_files for uploads in capistrano3

ruby - 请解释 ruby​​ ARGF 行为