Come fare il rollback di una migrazione specifica?

Ho il seguente file di migrazione `db\migrate20100905201547_create_blocks.rb

Come posso fare specificamente il rollback di quel file di migrazione?

Soluzione
rake db:rollback STEP=1

È un modo per farlo, se la migrazione che vuoi fare il rollback è l'ultima applicata. Puoi sostituire 1 con quante migrazioni vuoi tornare indietro.

Per esempio:

rake db:rollback STEP=5

Effettuerà anche il rollback di tutte le migrazioni avvenute in seguito (4, 3, 2 e anche 1).

Per eseguire il rollback di tutte le migrazioni fino a (e includendo) una migrazione di destinazione, utilizzare: (Questo comando corretto è stato aggiunto DOPO tutti i commenti che sottolineavano l'errore nel post originale)

rake db:migrate VERSION=20100905201547

Per eseguire il rollback di una sola migrazione specifica (FUORI ORDINE) usare:

rake db:migrate:down VERSION=20100905201547

Nota che questo NON farà il rollback di nessuna migrazione intermedia -- solo quella elencata. Se questo non è quello che volevi, puoi tranquillamente eseguire rake db:migrate ed eseguirà nuovamente solo quella, saltando tutte le altre che non sono state precedentemente rollbackate.

Commentari (7)
rake db:migrate:down VERSION=20100905201547

farà rollback del file specifico.


Per trovare la versione di tutte le migrazioni, puoi usare questo comando:

rake db:migrate:status

Oppure, semplicemente il prefisso del nome del file della migrazione è la versione di cui hai bisogno per il rollback.


Vedere la voce della guida Ruby on Rails sulle migrazioni.

Commentari (10)

Puoi fare il rollback della tua migrazione usando rake db:rollback con diverse opzioni. La sintassi sarà diversa a seconda delle tue esigenze.

Se vuoi fare il rollback solo dell'ultima migrazione, allora puoi usare

rake db:rollback

o

rake db:rollback STEP=1

Se vuoi fare il rollback di un certo numero di migrazioni in una sola volta, allora devi semplicemente passare un argomento:

rake db:rollback STEP=n

dove n è il numero di migrazioni di cui fare il rollback, contando dall'ultima migrazione.

Se vuoi fare il rollback di una migrazione specifica, allora dovresti passare la versione della migrazione nel seguente modo:

rake db:migrate:down VERSION=xxxxx

dove xxxxx è il numero di versione della migrazione.

Commentari (1)