2012-08-24 50 views
0

目前,對於我數據庫中的每個表,我通過多個步驟添加列(即通過多次遷移新文件添加列)。這導致大量的遷移文件(約50個左右?)。這看起來很不乾淨。維護遷移文件的最佳實踐

我最終得到大量的「add-details_to」文件與單個條目「add_(column_name)_to」文件混合在一起,使得很難判斷哪個文件用於遷移哪一列。

有沒有辦法幹掉遷移文件,以便每個表都有一個遷移文件?

例如,如果我在一次遷移中添加多列,然後決定刪除其中一列,那麼最佳做法是什麼?

1)創建了一個專欄中,我想刪除

2)回滾整個多列遷移向下遷移,然後創建只有我想列一個新的向上遷移。

我目前遵循1,但在我看來,2將允許我擺脫我最初的錯誤遷移文件,從而避免了大量的遷移文件爲每個表的問題。

任何想法,將不勝感激!

回答

1

我認爲一般來說,讓遷移文件增長並通過測試來管理日益增長的需求是一個很好的選擇。 shoulda-matchers是一個很好的工具。

我絕對不喜歡的down遷移的想法,尤其是在其up已在服務器上運行(除少數例外,如果down是針對即時遷移)。我寧願創建另一個遷移來執行down中的操作。雖然,我會承認有時間down是要走的路。

但最終這一切都取決於你在你的應用程序中的位置。如果在本地使用某個功能並想要整合,我可以看到您正在執行此操作,在此處執行db:migrate:redo,直到您獲得當前遷移所需的內容。但是,一旦你推動某些東西(特別是生產),我會添加另一個遷移。

+0

我明白了。這很有道理,謝謝。只是不確定是否有簡單的方法來簡化遷移文件。所以我認爲沒有一個。 – umezo