Ruby on rails 编辑现有的Rails迁移是个好主意?
在开始一个新项目时,模型中有很多更改,我发现编辑现有迁移很容易&运行Ruby on rails 编辑现有的Rails迁移是个好主意?,ruby-on-rails,ruby,ruby-on-rails-3,rails-migrations,Ruby On Rails,Ruby,Ruby On Rails 3,Rails Migrations,在开始一个新项目时,模型中有很多更改,我发现编辑现有迁移很容易&运行db:clean或db:reset,而不是创建一个新迁移。当应用程序还没有投入生产时,我会这样做,这意味着我可以毫无顾虑地重置/清理数据库&我是一个人工作,或者是一个小团队的一部分 但是今天,我遇到了以下建议,说这不是一个好主意&不鼓励编辑现有迁移: 编辑现有迁移不是一个好主意:您将创建 为自己和同事做额外的工作会导致严重的头痛 如果已在上运行迁移的现有版本 生产机器。相反,您应该编写一个新的迁移 执行所需的更改。编辑新生成的
db:clean
或db:reset
,而不是创建一个新迁移。当应用程序还没有投入生产时,我会这样做,这意味着我可以毫无顾虑地重置/清理数据库&我是一个人工作,或者是一个小团队的一部分
但是今天,我遇到了以下建议,说这不是一个好主意&不鼓励编辑现有迁移:
编辑现有迁移不是一个好主意:您将创建
为自己和同事做额外的工作会导致严重的头痛
如果已在上运行迁移的现有版本
生产机器。相反,您应该编写一个新的迁移
执行所需的更改。编辑新生成的
尚未提交到源代码管理(或更多)的迁移
一般来说,在您的开发之外还没有传播
机器)相对无害
我想知道:
- 我会遇到什么潜在的陷阱
- 这些陷阱是否适用于我的情况(开发阶段,单独工作)李>
因为您清理了数据库并重置了它,所以每个人都会这样做,否则如果他们尝试迁移,就会出现问题 我正在开发一个web应用程序。虽然我是一个人工作,但使用迁移来修改数据库是最好的做法。它可能会留下修改的痕迹,但您可以看到数据库结构的演变。从长远来看,您将能够更快地通过迁移解决数据库问题。数据库迁移是一种工具。像任何工具箱一样,最重要的是了解它的用途,如何使用它,以及为什么要这样使用它
- 实时站点:在实时站点中,您不能简单地使用rake:db reset,因为您显然需要所有这些数据
- 协作:您需要与其他开发人员保持迁移的一致性。如果他们将数据输入数据库(无论出于何种目的)并简单地混入您的代码中,该怎么办。您现在已经完全放弃了他们的努力,他们将被迫重置整个数据库
- rakedb:rollback:一旦修改了代码,就必须重置,现在就不能运行rollback李>
- 这是一个坏习惯:在大多数情况下,礼貌的做法是创建新的迁移。最好养成能够快速高效地创建新迁移的习惯和心态
我并不是真的告诉你不要这么做。这些只是我认为为什么不这样做的要点。我认为大多数情况下,如果你是一个人,或者特别是如果你刚刚开始你的项目(并且可能不会立即意识到您希望数据库的外观/工作方式。直接使用它们可能是最有效的。在您着手研究最佳实践之前,了解原因是很重要的。是的,我在我当地的环境中。所以我想没问题。只是想确认一下。谢谢回复您也可以从Rails控制台迁移数据库:
ActiveRecord::Migration。一些迁移方法(…)
@tokland我尝试了ActiveRecord::Migration.up.create\u table(“test”)
它说的是未定义的方法。语法是什么?你为什么不亲自体验一下呢?:)我已经在做了:)这提醒了我,一旦我们在迁移中使用了全局常量,这些常量就在某个constant.rb文件中定义,该文件后来由某个人编辑:)所以关键是,在迁移中始终使用硬编码的值,没有变量,没有常量!但是,如果我只是创建了一个模型&想要更改它,我会发现直接编辑迁移更容易。没有必要在流程的早期留下审计线索。请您添加更多的内容来帮助OP,例如哪些陷阱和/或如何了解什么是“最佳实践”?谢谢(审查)