在rails 3中使用db / seeds.rb的正确方法是什么

时间:2011-08-11 12:43:05

标签: ruby-on-rails

当我目前的项目开始时,我仍在学习RoR,我们有一个更有经验的人来驱动我们的项目组织(文件去哪里,我们做什么来处理项目)。他断言的一件事是,当你有表的种子数据时,你将种子数据放入迁移本身。他还声称db / seeds.rb仅用于在执行单元或AT时在测试之间设置测试数据库(我们分别使用rspec和黄瓜)。

最近我一直在阅读这里的各种答案,暗示我们这样做的不正确,我希望这里的某个人能够更深入地解释“Rails Way”的用途。

谢谢!

编辑:

我需要了解的一些事情:

一个。我如何确保此种子数据在数据库中进行测试。我被告知rspec测试通过将测试放在事务中来清理数据库,最后简单地回滚该事务,如果这是真的,测试数据库是否在整个测试运行之前播种?导致播种的原因。

rake db:test:prepare

似乎没有为数据库播种,尽管我可能弄错了

湾我必须实际运行

rake db:migrate
rake db:seed

引入迁移后需要将新的种子数据添加到db / seeds.rb?

℃。我是否必须将种子的每个部分都附上检查以确保它是必要的,以便在重新运行种子时不会出现例外情况,例如,当尝试对之前播种的东西进行重新播种时,违反了唯一性限制。 (导致问题的是,这个问题在语法上是否正确?)。

我认为导致“我们的家伙”在迁移中播种的道路上的事情是,我们可以指望整个迁移机制不再重新运行以前的种子而不是在尝试种子之前检查seeds.rb中的所有内容。 ..

我希望这更清楚......

1 个答案:

答案 0 :(得分:2)

迁移用于操纵数据库的结构,而不是用于操作数据的结构,当然也不适用于简单的人口任务。

这只是一个rake任务,它吸收了db / seeds.rb中指定的数据。