2011-06-07 34 views
11

我正在开发部署我的第一个Rails应用程序,并且在这个过程中的某个地方,我拙劣地进行了迁移。当我尝试将我的应用程序推送到生产服务器并运行rake db:migrate时,它在出现错误的地方失败。如何“扁平化”Rails迁移?

现在,我是的方式懒得通过我的个人迁移来找出哪里出了问题,所以我试图避免这样做。鉴于我目前的开发数据库工作得很好,是否有办法将当前模式“扁平化”为单一的全面迁移?

据我所知,这是马虎,我明白,我可能做了一个愚蠢的事情,首先打破迁移链。 (我可能直接在某处编辑数据库模式,我现在明白这是一个禁忌)。但这是一个非常小的项目,而且我基本上是唯一参与的开发人员,所以我很乐意将这个问题扫描到地毯下如果可能的话。

有没有办法做到这一点?

感谢您借用您的专业知识。

回答

13

这是db/schema.rb文件的用途。如果您的迁移只有结构性更改,则可以运行rake db:schema:load而不是运行rake db:migrate来获取表格的绝对结构。

+0

如果他在此期间更改了db,他可能需要先执行rake db:schema:dump。 – 2011-06-07 21:36:00

+0

像冠军一样工作。谢谢! – 2011-06-08 17:51:22

2

如果编辑模式直接将需要运行:

rake db:schema:dump 

这将需要无论是在数据库中,并创建一个schema.rb文件。然后,您可以随时运行rake db:schema:load。但是,这意味着你的迁移仍然很糟糕。您可以删除所有这些文件并从schema.rb文件重新创建它们。

+0

谢谢凯尔!是的,我刚刚删除了旧的迁移,现在我正在做生意。 – 2011-06-08 17:52:12