回答

0

IMO,如果你正確地進行了遷移,它應該有一個很長的遷移列表。考慮一下你必須通過遷移來做的每一點改變。正如您所說的,正確的方法是在需要更改表格時添加新的遷移。

所以,正如我所提到的,我相信有越來越多的遷移意味着你做的是正確的。 (表兄弟姐妹很多時候你需要改動到現有的表,你簡單的不能刪除該表的時間重新創建)

不過話說回來,它總是一個好主意,運行rake db:migrate飄飛(對於隔離數據庫)只是爲了確保你的遷移工作作爲一個組

3

有一長串遷移文件是正常的。這是軌道的最佳功能之一。把它們想象成層疊(像洋蔥一樣),然後堆疊在一起。如果你添加一個新的列或表,然後你決定不再需要它,你可以回滾(剝離)最新的變化。只要你有移植文件,你可以輕鬆地來回移動(不建議移動太多,但你明白了)。請記住,除非您進行回滾,否則請勿在遷移文件被刪除後刪除它們。當您回滾並刪除遷移文件時,請確保您處於正確的層(回滾點)。

爲什麼?因爲例如當某人克隆您的應用程序並運行您的遷移文件時,它會從頭到尾遍歷所有遷移文件。如果中間的東西被搞亂或刪除,您將無法創建數據庫,因爲它會經歷所有步驟。希望能幫助到你。

0

這可能是壞習慣,但我使用rake db:migrate VERSION=0向下遷移,然後更改具有(例如)用戶的相應遷移,最後使用rake db:migrate遷移數據庫。這樣我就少了一團亂麻,並且確切地知道哪個遷移對什麼模型起什麼作用。它更乾淨,但我想這種技術只能在webapp的開始時使用。 希望這有助於。

0

還有一點要注意的,從護欄文檔

如果需要其他系統上創建應用程序數據庫,您應該使用DB:架構:負載,沒有運行一切從零開始的遷移。後者是一種有缺陷且不可持續的方法(您將積累的遷移越多,運行速度越慢,發生問題的可能性也越大)。

強烈建議您將此文件(schema.rb)檢入您的版本控制系統。