2013-11-14 98 views
0

現在我正在更新Rails應用程序,並且數據庫有一些問題。它也正在從MySQL轉換到PostgreSQL。Rails更新舊數據庫

有3列用於跟蹤一個時間值。設施在星期一開放的時間被記錄爲monday_open_hour,monday_open_minute,monday_open_ampm。我想將這些合併成一個時間字段。

還有幾個字段只用於3000多條記錄中的1%,所以我想將它們分成單獨的表格。

這樣做的最好方法是什麼?我想它可能可以在SQL中用某種存儲過程/遊標完成。有沒有辦法用Ruby/Rails做到這一點?

回答

1

處理增量數據庫更改的Rails方法是使用migrations。即使您正在與團隊合作,遷移也可以讓您以有序的方式將增量更改應用於模式或數據庫內容。對於常見任務,如創建和刪除表,重命名列以及類似的簡單事務,都有很好的助手,但是如果需要的話,您可以使用任意SQL(儘管請注意,這很可能會將您與當前數據庫聯繫起來,並進一步行動更困難)。

基本上,您可以使用rails generate migration ConsolidateDateColumns(例如)生成新的遷移。這將在db/migrate目錄中爲您創建一個模板;請參閱Rails Guides entry開始編寫它們。當你準備好應用它時,運行rake db:migrate

這樣做的好處是它可以讓您輕鬆地將相同的更改應用於不同的環境(開發,測試,生產,分期或跨開發團隊)並保持同步,並鼓勵您儘可能保持事物可逆,所以如果需要的話,你可以保持一定程度的自由來回移動。

還有一件事:聽起來你會在快速繼承中做很多重大改變。確保在開始之前對原始數據庫進行備份,並在針對真實事物運行之前,在單獨的環境中針對縮減的測試集徹底測試您的工作!

+0

感謝您指點我正確的方向。這個答案加上[在Rails遷移中遷移數據]的答案(http://stackoverflow.com/questions/1885242/migrating-data-in-a-rails-migration)幫助我開始了。 – Shaun