自我的rails应用程序开始以来,我创建了大量的迁移。其中一些仅用于测试目的。我现在有很多完全没用的迁移(例如:在迁移中创建一个表并在下一个中删除它)。
当运行db:migrate后,schema.rb会更新,是否可以删除所有迁移并从schema.rb的实际内容开始?
答案 0 :(得分:8)
是的,您可以(也可能应该)删除较旧的迁移。由于您的模型代码将取决于架构的更高版本,因此您的旧迁移可能不再有效。
因此,请务必删除迁移(您在源代码管理下拥有它们,对吧?),然后使用
rake db:schema:load
如果需要,可以初始化新数据库。
更新:Rails指南现在有类似的说法:http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you
答案 1 :(得分:0)
更好的方法是执行以下操作...
一旦达到项目的里程碑,并且您确定不想在该版本的数据库下迁移, 您可以使用单个迁移文件替换大量迁移文件,然后可以将其用作新的" initial"迁移捆绑了截至该日期所做的所有事情。
之后:继续在项目中使用迁移!
永远不要手动编辑schema.rb文件..永远不要加载db / schema.rb文件,除非它是灾难恢复之类的东西。
您没有100%保证签入版本控制的文件是最新版本甚至是正确版本。
上下迁移更加安全,而只需在一个迁移文件中捆绑大量迁移。
通过手动加载schema.rb文件,您完全避开了迁移提供的安全网。这不是一个好主意。