环境
红宝石 1.9.3p194(2012-04-20 修订版 35410)[x86_64-darwin10.8.0];导轨 3.2.6;OSX 10.6.8
问题
- 即使在重置我们的数据库 (rake db:reset) 之后,迁移也会生成错误的表、字段和模式,其中包含已被早期迁移规范弃用的表、字段、限制、索引等。
背景
我在两个 OSX 10.6.8 系统之间来回移动了一个与 github 合作的项目。在之前的时刻,迁移是通过将预期的表定义合并到一个初始迁移中从头开始重新开始的(消除了许多先前迁移规范的大量混乱和费力的处理)。
几个月来,修改后的迁移忠实地生成了表和模式。
在从便携式系统同步公共存储库后将我们的项目拉到我的主要开发系统后,进一步的迁移将保留许多表和字段,这些表和字段实际上没有在任何现有迁移中定义,也不是由相同的迁移生成其他合作者的开发环境。换句话说,许多已失效/已弃用的字段和表以某种方式保留在规范中,而这些规范早在我们修改后的迁移中被删除了。因此 db:migrate 在这个系统上产生错误的表和模式,即使在运行 rake db:reset 之后也是如此。
据推测,先前的规定保留在开发环境中的某个地方,并且有必要以某种方式删除、修改或覆盖先前的、不再存在的定义,这些定义仍然在不受欢迎的表和字段中沉淀。
在纠正这个问题时,被迫撤销现有的工作是非常不可取的。
问题
那么,重新生成忠实于我们在项目中保留的迁移规范的迁移、表和模式的正确且有效的方法是什么?