维护迁移文件的最佳实践

时间:2012-08-24 21:42:36

标签: ruby-on-rails database migration

目前,对于我的数据库中的每个表,我在几个步骤中添加列(即,我通过多次迁移新文件来添加列)。这导致大量的迁移文件(大约50左右?)。这看起来非常糟糕。

我最终将大量“add-details_to”文件与单个条目“add_(column_name)_to”文件混合在一起,这使得很难判断哪个文件用于迁移哪个列。

有没有办法干掉迁移文件,以便每个表都有一个迁移文件?

例如,如果我在一次迁移中添加多个列,那么决定我要删除其中一个列,最佳做法是什么?

1)为我要删除的一列创建向下迁移

2)回滚整个多列迁移,然后仅使用我想要的列创建一个新的向上迁移。

我目前关注1,但在我看来,2允许我摆脱我最初的错误迁移文件,从而避免了每个表的大量迁移文件问题。

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为通常情况下,让您的迁移文件增长并通过测试管理不断增长的需求是一个不错的选择。 shoulda-matchers是一个很好的工具。

我绝对不喜欢down迁移的想法,特别是在服务器上运行up之后(如果down反对立即迁移,则很少例外)。我宁愿创建另一个迁移来执行down中已完成的操作。但是,我承认有时候down是可行的。

但最后这一切都取决于你在应用中的位置。如果在本地处理某个功能并希望进行整合,我可以看到您这样做,您正在执行db:migrate:redo,直到您获得当前迁移所需的内容。但是,一旦你推动了某些事情(特别是生产),我会添加另一个迁移。