【发布时间】: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
假设我在db/seeds.rb 中定义了一些变量,例如:user = User.create(...)。
这些变量的作用域是什么?
问题 2
如果我在db/seeds.rb中有大量代码,是否建议将其放在class中?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 scope
变量在已启动的 rake 实例的范围内。 因此,如果同时启动多个任务,它们将在其他任务的范围内。
例如
rake db:seed custom:sometask
在 db:seed 中定义的实例变量可以在 'sometask' 中访问
如果 rake 文件由于添加太多记录而太大,您可以将要插入的数据移动到 yaml 文件中,这样可以使您的种子文件更干净,而不是创建一个类。
【讨论】:
种子数据是应用程序正常工作必须加载的任何内容。应用程序需要加载其种子数据才能在开发、测试和生产中运行。
种子数据大部分是不变的。它通常不会在您的应用程序中进行编辑。但是需求可以而且确实会发生变化,因此可能需要在已部署的应用程序上重新加载种子数据。
回答你的第二个问题
seed.rb 中的代码行不会影响性能,seed 的基本任务是使用预定义的记录初始化数据库。请记住一件事,父创建是在子创建之前完成的。
这里有一些可能对你有帮助的参考资料
【讨论】: