Ruby on rails 删除rails中过去的迁移

Ruby on rails 删除rails中过去的迁移,ruby-on-rails,ruby-on-rails-3,rails-migrations,Ruby On Rails,Ruby On Rails 3,Rails Migrations,自从我的rails应用程序开始以来,我创建了很多迁移。其中一些只是为了测试目的。我现在有很多迁移是完全无用的(例如:在迁移中创建一个表,然后在下一个迁移中删除它) 由于schema.rb在运行db:migrate后得到更新,是否可以删除所有迁移并从schema.rb的实际内容开始?是的,您可以(而且可能应该)删除较旧的迁移。由于您的模型代码将依赖于您的模式的更高版本,因此您的旧迁移可能不再有效 因此,请务必删除迁移(您将它们置于源代码管理之下,对吗?),然后使用 如果需要,初始化新数据库 更新:

自从我的rails应用程序开始以来,我创建了很多迁移。其中一些只是为了测试目的。我现在有很多迁移是完全无用的(例如:在迁移中创建一个表,然后在下一个迁移中删除它)

由于schema.rb在运行db:migrate后得到更新,是否可以删除所有迁移并从schema.rb的实际内容开始?

是的,您可以(而且可能应该)删除较旧的迁移。由于您的模型代码将依赖于您的模式的更高版本,因此您的旧迁移可能不再有效

因此,请务必删除迁移(您将它们置于源代码管理之下,对吗?),然后使用

如果需要,初始化新数据库


更新:《Rails指南》现在对此有类似的说法:

更好的方法是执行以下操作

一旦您在项目中达到一个里程碑,并且您确定不希望迁移到低于该版本的DB, 您可以将大量迁移文件替换为单个迁移文件,然后将其用作新的“初始”迁移,该迁移将捆绑到该日期之前完成的所有工作

之后:继续在项目中使用迁移

切勿手动编辑schema.rb文件。。并且永远不要加载db/schema.rb文件,除非它是用于灾难恢复之类的用途

您无法100%保证签入版本控制的文件是最新版本,甚至是正确版本

上下迁移更安全,只需将大量迁移捆绑在一个迁移文件中即可


通过手动加载schema.rb文件,您完全绕过了迁移提供的安全网。这不是一个好主意。

您可以使用
rake db:schema:load
并删除所有迁移文件?使用
rake db:schema:load
而不是
rake db:migrate
?否。
rake db:schema:load
转储当前数据库并从
schema.rb
重新创建它
rake db:migrate
将所有未完成的迁移应用于现有数据库。如果我使用的是schema.rb的最新版本,为什么将它们放在源代码管理中如此重要?你应该拥有源代码管理中的一切——这样,你可以删除(或修改)任何东西,而不必担心是否需要它。因为您总是可以恢复以前的版本。我总是拥有源代码管理方面的一切,但我的问题更多的是知道是否可以最终摆脱非常旧的迁移。如果我要在一个全新的服务器上部署我的应用程序,schema.rb就足够了吗?
rake db:schema:load