【问题标题】:Best practice when using seed.rb使用 seed.rb 时的最佳实践
【发布时间】:2011-08-09 00:40:43
【问题描述】:

我在理解如何在 rails 中使用 seed.rb 脚本时遇到了一些困难。

到目前为止,我每次部署应用程序时都使用它来填充我的数据库。

像这样。

seed.rb

["Video", "Tv"].each do |thing|
  Category.create(name: thing)
end

category.rb

class Category < ActiveRecord::Base
  validates_uniqueness_of :name
end

现在可以在每次部署或拉取时运行该脚本。 开发团队中的任何人现在都可以添加自己的类别,而不必担心重复。

像这样。

一个人

  • Table 类别添加到seed.rb
  • 提交并推送到 master。

第二个人

  • 拉主。
  • 运行rake db:migraterake db:seed 以确保本地数据库是最新的。
  • 将应用程序部署到生产服务器。 rake db:seed 正在服务器上运行,以确保数据库是最新的。

这个工作流程可以吗?如果不行,我应该将新数据放在哪里以确保每个开发人员都有一个最新的数据库?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 seed


    【解决方案1】:

    我建议编写你的种子,这样它就可以运行多次,而不会尝试创建重复的类别...

    ["Video", "Tv"].each do |thing|
      Category.find_or_create_by_name(thing)
    end
    

    【讨论】:

    • 使用一个字段只是一个例子。例如,我可以在表格中提交一个activeactive 字段可能会在运行时发生变化,这意味着运行 Category.find_or_create_by_name_and_active(name, active) 可能会产生重复。
    • 如果唯一属性是name,那么你可以... ["Video", "Tv"].each do |name| category = Category.find_or_initialize_by_name(name) category.update_attributes(...) end
    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多