2014-01-18 189 views
0

我們的網站剛剛進入測試階段,現在我們有大量生產用戶,我們意識到我們在初始模式方面犯了一些重大錯誤,並且覺得我們現在需要修改數據庫的結構。不可逆遷移與全新遷移?

這將導致我們編寫一堆不可逆遷移。有人建議我們可以完全放棄數據庫,銷燬所有現有的遷移,然後從頭開始重寫,避免我們第一次發生的錯誤。

我有幾個問題:

1)沒有人真的這樣做在現實生活中? 2)我們有什麼選擇來保留我們的數據? IS TAPS仍然要走嗎? 3)或者我們應該寫出不可逆的遷移,並忘記放棄db?

This question處理這個有點,我猜。

回答

2

不可逆轉的遷移並不是什麼可怕的事情。可能會出現無法撤銷遷移的情況。

我的建議是不要刪除數據庫,但用小的步驟改變它。

從爲您的用戶創建並行模型開始,或者使用require字段更改現有模型。創建一個,至少兩個遷移並進行部署,確保您的當前應用程序仍按預期工作。

然後創建另一批遷移和部署。

可能需要5次,10次甚至20次迭代才能以您想要的方式更改所有結構,但不會隨着刪除數據庫的過程,使應用程序脫機並稍後導入整個數據庫。

+0

好的,這是真正有用的建議。我打算這麼做。並在將來從schema.rb構建數據庫。很高興知道這個東西。 – stephenmurdoch