8

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

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

4

2 回答 2

8

是的,您可以(并且可能应该)删除旧的迁移。由于您的模型代码将依赖于架构的更高版本,因此您的旧迁移可能不再起作用。

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

rake db:schema:load

如果需要,可以初始化一个新数据库。

更新:Rails 指南现在有类似的说法: http: //guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

于 2012-04-12T11:51:13.107 回答
0

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

一旦您在项目中达到一个里程碑,并且您确定不想迁移到低于该版本的数据库,您可以将大量迁移文件替换为单个迁移文件,然后您可以将其用作新的迁移文件“初始”迁移将迄今为止完成的所有内容捆绑在一起。

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

永远不要手动编辑你的 schema.rb 文件。除非是为了灾难恢复,否则永远不要加载 db/schema.rb 文件。

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

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

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

于 2017-05-30T21:33:33.503 回答