2009-09-16 12 views
11

Esiste una convenzione di denominazione delle best practice per le migrazioni di Rails, in particolare quando si modifica un modello?Convenzioni di denominazione per le migrazioni di Rails

ad es. se sto aggiunta di una colonna bar al modello Foo, dovrei chiamarla edit_foo o add_bar_to_foo

sto assumendo se sto modificando modelli mutliple allora dovrei creare più migrazioni, ma cosa succede se sto facendo multipla modifiche a un singolo modello, lo chiamo add_bar_remove_x_edit_y_to_foo?

risposta

5

Sono d'accordo con la recensione precedente. La denominazione dovrebbe concentrarsi sulla leggibilità. Ma ricorda anche che non puoi (né dovresti) avere due migrazioni con lo stesso nome.

Quindi, nomi generici come edit_foo_model non sono generalmente una buona idea (poiché, cosa succede quando si desidera aggiungere più colonne a quel modello), sarebbe meglio raggruppare le colonne in quello che è lo scopo, ad esempio update_foo_for_bar_support . In genere, è possibile saltare l'aggiunta del modello poiché, beh, tutti sanno che le migrazioni gestiscono i modelli, quindi non è necessario menzionarlo nel nome (ovvero, update_foo anziché update_foo_model).

Inoltre, quello che faccio di solito è tenere separate le diverse modifiche. Pertanto, se sono presenti più modifiche diverse in un modello, le separerei in file di migrazione diversi, uno per l'aggiunta di colonne e l'altro per la rimozione di colonne, ad esempio.

+1

Sembra l'essenza di quello che il tuo modo di dire è venuto fuori con nomi sensibili che riflettono le modifiche che stai apportando al modello, piuttosto che generico edit_foo o verboso add_bar_to_foo. per esempio. add_bar_support_to_foo. E se la tua migrazione sta facendo modifiche multiple, non correlate, allora la dividi. Questo ha senso :) – roryf

0

Il punto è la leggibilità- per scoprire velocemente a cosa è responsabile la migrazione .. se si scrivono troppi "dati" nel nome, rende più difficile scansionare e ti sparare al piede.

Quindi .. se si tratta di 1-2 modifiche, scrivere nel nome, se ci sono troppi cambiamenti, scrivere update_foo_model (o edit_foo_model)

+1

Il problema con questo è se si deve apportare un cambiamento simile più tardi nella vita. Non puoi avere migrazioni con lo stesso nome. –

+0

In effetti, è una soluzione semplice per la maggior parte dei casi, penso che la semplicità del caso comune valga la pena. – amitkaz

2

Vorrei suddividere più modifiche dello schema in più migrazioni! Quindi puoi facilmente nominare le singole migrazioni!

Problemi correlati