自我的Rails应用开始以来,我创建了很多迁移项目。其中一些仅用于测试目的。我现在有很多完全没用的迁移(例如:在迁移中创建一个表并将其放入下一个表中)。删除过去的轨道迁移
由于schema.rb获取更新一次db:migrate运行,是否可以删除所有的迁移并从schema.rb的实际内容开始?
自我的Rails应用开始以来,我创建了很多迁移项目。其中一些仅用于测试目的。我现在有很多完全没用的迁移(例如:在迁移中创建一个表并将其放入下一个表中)。删除过去的轨道迁移
由于schema.rb获取更新一次db:migrate运行,是否可以删除所有的迁移并从schema.rb的实际内容开始?
是的,你可以(也可能应该)删除旧的迁移。由于你的模型代码将取决于你的模式的更新版本,所以你的旧迁移可能会失效。
因此,通过各种手段删除迁移(你有他们的源代码控制下,对吧?),并使用
rake db:schema:load
如果你需要初始化一个新的数据库。
UPDATE:Rails的指导现在有类似的东西说这个:http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you
一个更好的方式来做到这一点是做到以下几点...
当你到达你的项目的一个里程碑,并且您确定不希望在该版本的数据库下迁移,您可以用一个迁移文件替换大量的迁移文件,然后您可以将其用作捆绑启动的新“初始”迁移到目前为止所做的一切。
之后:继续在项目中使用迁移!
绝不要手动编辑您的schema.rb文件..并且永远不会加载db/schema.rb文件,除非它是用于灾难恢复之类的东西。
您没有100%保证签入版本控制的文件是最新版本,甚至是正确的版本。
上下迁移并将大量迁移捆绑到一个迁移文件中会更安全。
通过手动加载schema.rb文件,您完全绕过了迁移提供的安全网。这不是一个好主意。
您可以使用'rake db:schema:load' – 2012-04-12 11:40:43
并删除所有迁移文件? – Luc 2012-04-12 11:43:21