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

Ruby on rails 在rails 3中使用db/seeds.rb的正确方法是什么,ruby-on-rails,Ruby On Rails,当我当前的项目开始时,我还在学习RoR,我们有一个更有经验的人来推动我们的项目组织(文件去哪里,我们如何处理项目)。他断言的一件事是,当您拥有表的种子数据时,您将该种子数据放入迁移本身。他还断言db/seeds.rb仅用于在执行单元或ATs时在测试之间设置测试db(我们分别使用rspec和cucumber) 最近,我在这里读到了各种各样的答案,这些答案暗示我们做得不对,我希望这里的人能给我一个更深入的解释,什么是“Rails方式” 谢谢 编辑: 我需要了解以下几点: a。如何确保该种子数据位于数

当我当前的项目开始时,我还在学习RoR,我们有一个更有经验的人来推动我们的项目组织(文件去哪里,我们如何处理项目)。他断言的一件事是,当您拥有表的种子数据时,您将该种子数据放入迁移本身。他还断言db/seeds.rb仅用于在执行单元或ATs时在测试之间设置测试db(我们分别使用rspec和cucumber)

最近,我在这里读到了各种各样的答案,这些答案暗示我们做得不对,我希望这里的人能给我一个更深入的解释,什么是“Rails方式”

谢谢

编辑:

我需要了解以下几点:

a。如何确保该种子数据位于数据库中以供测试。我被告知,rspec测试通过将测试放在一个事务中来清理数据库,并在最后简单地回滚该事务,因此如果这是真的,那么测试数据库是否在整个测试运行之前得到种子?是什么导致播种发生的

rake db:test:prepare
似乎没有给数据库添加种子,尽管我可能弄错了

b。我真的要跑吗

rake db:migrate
rake db:seed
引入需要将新种子数据添加到db/seeds.rb的迁移之后

c。我是否必须在种子设定的每个单独部分都附上检查,以确保它是必要的,这样我在重新运行种子时不会出现异常,例如,在尝试对以前种子设定的内容重新种子设定时,会违反唯一性约束。(这就引出了一个问题,这个问题在语法上是否正确?)

我认为导致“我们的人”在迁移中播种的原因是,我们可以依靠整个迁移机制不重新运行以前的种子,而不是在尝试种子之前检查seeds.rb中的所有内容


我希望这更清楚…

迁移是为了操纵数据库的结构,而不是为了数据库中的数据,当然也不是为了简单的填充任务


简单地说,这是一个rake任务,它吸收db/seeds.rb中指定的数据。

我遵循逻辑,但我试图找出一些关于如何实现这一点的细节。我要补充我的问题…不要将seeds.rb用于测试或暂存数据集–它应该只用于运行应用程序所需的基础数据。迁移中的种子植入非常脆弱。您的模型验证和ORM回调很容易在迁移路径上破坏引用。rake规范似乎是在播种……播种值在我们的测试中,我不确定它是如何到达那里的。。。