【问题标题】:What is the scope of the code in db/seeds.rb in Ruby on Rails?Ruby on Rails 中 db/seeds.rb 中的代码范围是什么?
【发布时间】:2010-12-09 06:21:33
【问题描述】:

问题 1

假设我在db/seeds.rb 中定义了一些变量,例如:user = User.create(...)。

这些变量的作用域是什么?

问题 2

如果我在db/seeds.rb中有大量代码,是否建议将其放在class中?

【问题讨论】:

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


    【解决方案1】:

    变量在已启动的 rake 实例的范围内。 因此,如果同时启动多个任务,它们将在其他任务的范围内。

    例如

    rake db:seed custom:sometask
    

    在 db:seed 中定义的实例变量可以在 'sometask' 中访问

    如果 rake 文件由于添加太多记录而太大,您可以将要插入的数据移动到 yaml 文件中,这样可以使您的种子文件更干净,而不是创建一个类。

    【讨论】:

      【解决方案2】:

      种子数据是应用程序正常工作必须加载的任何内容。应用程序需要加载其种子数据才能在开发、测试和生产中运行。

      种子数据大部分是不变的。它通常不会在您的应用程序中进行编辑。但是需求可以而且确实会发生变化,因此可能需要在已部署的应用程序上重新加载种子数据。

      回答你的第二个问题

      seed.rb 中的代码行不会影响性能,seed 的基本任务是使用预定义的记录初始化数据库。请记住一件事,父创建是在子创建之前完成的。

      这里有一些可能对你有帮助的参考资料

      ASCIICasts

      Rail Spikes

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多