Ruby on Rails中db / seeds.rb中代码的范围是什么?

时间:2010-12-09 06:21:34

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

问题1

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

这些变量的范围是什么?

问题2

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

2 个答案:

答案 0 :(得分:2)

变量位于已启动的rake实例的范围内。 因此,如果同时启动多个任务,他们就可以参与其他任务。

例如

rake db:seed custom:sometask

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

中访问

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

答案 1 :(得分:1)

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

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

回答第二个问题

seed.rb中的

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

以下是一些可能对您有帮助的参考资料

ASCIICasts

Rail Spikes