2014-07-04 9 views
6

Devo creare migrazioni AR mentre sto modificando i miei modelli? Sto usando Mongoid e MongoDB, quindi non vedo alcun beneficio. L'unico vantaggio che mi viene in mente è la ridenominazione di un campo, ma che posso anche fare con un piccolo script. Funzionerebbe anche? Il mio istinto mi sta dicendo che non ho bisogno di migrazioni, ma mi piacerebbe sentire qualcuno con più esperienza.L'utilizzo delle migrazioni con Rails/Mongoid/MongoDB ha senso?

Qual è la migliore pratica? Dovrei usare le migrazioni con MongoDB?

+2

Continuate a migrare come ho imparato con Yii in PHP, molte persone hanno ancora degli scenari per l'utilizzo di scritps di migrazione con MongoDB, ho dovuto aggiungerlo al mio MongoDB Yii ext – Sammaye

+0

@Sammaye Quali sono questi scenari? – xx77aBs

+2

Uno scenario era con la standardizzazione, il problema con il fare cose nell'applicazione per farlo è che si ottiene codice bacato e sporco. Se lo fai nel database risolve questo problema. Un altro è quando decidi di cambiare funzionalità in Yii. C'era un altro posto per me nei forum Yii che mi ha fatto cambiare idea, ma non riesco a ricordarlo completamente ora – Sammaye

risposta

8

Dal momento che MongoDB non fornisce (come in 2.6) alcuna imposizione di schemi lato server, gli script di migrazione dei dati non sono strettamente necessari. Questo può essere particolarmente utile per la velocità di sviluppo.

Tuttavia, potrebbe essere ancora logico creare migrazioni per i dati di produzione se si desidera praticare una buona "igiene dei dati" e garantire la coerenza tra le diverse distribuzioni.

Ad esempio:

  • rimozione di campi inutilizzati
  • aggiunta di nuovi campi richiesti
  • valori predefiniti
  • impostazione
  • campi ridenominazione
  • loading tenuti data/fixtures
  • assicurando indici richiesti

Hai certamente la possibilità di eseguire uno dei suddetti script come script unici o gestire casi eccezionali nel codice dell'applicazione. Ad esempio, è possibile aggiungere pigramente campi mancanti o valori predefiniti poiché i documenti vengono caricati dal database per la modifica.

Per Mongoid in particolare si consiglia di provare la gemma mongoid_rails_migrations.

1

I documenti di Mongo DB sono senza schema e pertanto non sono necessarie migrazioni. Si può solo definire i campi nei modelli mongoid come:

field :name, type: String

Controllare la mongoid documentation per i campi supportati.

Problemi correlati