2014-07-04 54 views
6

我應該在更改模型時創建AR遷移嗎?我使用的是Mongoid和MongoDB,所以我沒有看到任何好處。我能想到的唯一好處是重命名一個字段 - 但我也可以用小腳本來完成。這甚至會工作嗎?我的直覺告訴我,我不需要遷移,但我想聽到有更多經驗的人。在Rails/Mongoid/MongoDB中使用遷移是否有意義?

最佳做法是什麼?我應該使用MongoDB遷移嗎?

+2

你仍然需要遷移,就像我在PHP中學習Yii一樣,許多人仍然有使用MongoDB遷移策略的場景,必須將它添加到我的MongoDB Yii ext – Sammaye

+0

@Sammaye那些場景是什麼? – xx77aBs

+2

一個場景是標準化,在應用程序中做這些事情的問題是,你得到越野車和髒代碼。如果你在數據庫中這樣做,它可以解決這個問題。另一個是當你決定改變Yii的功能。在Yii論壇上還有另一個讓我改變主意的姿勢,但我現在不能完全記住它 – Sammaye

回答

8

由於MongoDB沒有(如2.6)提供任何服務器端模式實施,所以不嚴格要求數據遷移腳本。這對開發速度特別有用。

但是,如果您想練習良好的「數據衛生」並確保不同部署之間的一致性,那麼爲您的生產數據創建遷移仍然有意義。

例如:

  • 去除未使用的字段
  • 添加新的所需字段
  • 設置默認值
  • 重命名字段
  • 加載所需的數據/夾具
  • 確保所需索引

您當然可以選擇將以上任何一種作爲一次性腳本或處理應用程序代碼中的異常情況。例如,當文檔從數據庫加載進行編輯時,您可以懶惰地添加缺少的字段或默認值。

對於Mongoid尤其是你可能想嘗試mongoid_rails_migrations寶石。

1

Mongo DB文檔無模式,因此不需要遷移。你可以只定義字段中您mongoid車型,如:

field :name, type: String

檢查mongoid documentation支持的領域。

相關問題