【问题标题】:What is the correct way to use db/seeds.rb in rails 3在 rails 3 中使用 db/seeds.rb 的正确方法是什么
【发布时间】:2011-08-11 12:43:05
【问题描述】:

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

最近我在这里阅读了各种答案,暗示我们做错了,我希望这里的人能给我更深入的解释“Rails Way”是什么。

谢谢!

编辑:

我需要了解的几件事:

一个。我如何确保这些种子数据在数据库中进行测试。有人告诉我,rspec 测试通过将测试放入事务中并最后简单地回滚该事务来清理数据库,所以如果这是真的,测试数据库是否会在整个测试运行之前播种?是什么导致播种发生。

rake db:test:prepare

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

b.我必须实际运行吗

rake db:migrate
rake db:seed

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

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

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

    【讨论】:

    • 我遵循逻辑,但我试图找出一些关于如何处理这个问题的细节。我会补充我的问题...
    • 不要将 seed.rb 用于测试或暂存数据集——它应该只用于您的应用运行所需的基础数据。
    • 迁移中的种子非常脆弱。您的模型验证和 ORM 回调很容易在迁移路径中出现损坏的引用。
    • rake spec 似乎正在播种...播种值用于我们的测试,我不确定它是如何到达那里的...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2021-11-21
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多