0

目前,对于我数据库中的每个表,我分几个步骤添加列(即,我通过多次迁移新文件来添加列)。这会导致大量迁移文件(约 50 个左右?)。这似乎很不干燥。

我最终得到了与单个条目“add_(column_name)_to”文件混合的大型“add-details_to”文件,这使得很难分辨哪个文件用于迁移哪个列。

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

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

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

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

我目前遵循 1,但在我看来,2 可以让我摆脱最初的错误迁移文件,从而避免很多迁移文件的问题。

任何想法将不胜感激!

4

1 回答 1

1

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

我绝对不喜欢down迁移的想法,尤其是在它up在服务器上运行之后(如果down反对立即迁移,则很少有例外)。我宁愿创建另一个迁移来完成在down. 虽然,我承认有时down是要走的路。

但最终这一切都取决于您在应用程序中的位置。如果在本地开发一个功能并想要整合,我可以看到你这样做,你在哪里做,db:migrate:redo直到你得到你当前迁移所需的东西。但是,一旦您将某些东西(尤其是生产)推高,我会添加另一个迁移。

于 2012-08-24T22:02:02.840 回答