2011-08-18 11 views
6

Ho una tabella che ho creato utilizzando le migrazioni, ora voglio sbarazzarmi di questa tabella. Sono abbastanza sicuro di poter eseguire nuovamente questa migrazione, ma non riesco a trovare la sintassi per farlo. Ho trovato questa domanda dalla ricerca Rails DB Migration - How To Drop a Table?Rails 3: rilasciare una tabella utilizzando la migrazione

ma in pratica dice che puoi trovare quello che ti serve e fornisce un collegamento. Ho letto quel link e non ho visto nulla che dica come farlo. Ne ho visto alcuni pezzi, ma non so come metterli insieme.

Vedo che nella migrazione ha un metodo self.down, ho solo bisogno di sapere come chiamarlo.

risposta

8

È possibile ritirare l'ultima migrazione con:

rake db:rollback

che verrà eseguito il metodo self.down, che dovrebbe essere drop_table :table_name

+0

E se fosse una migrazione mi sono imbattuto il mese scorso e ho Hai fatto un mucchio di più da allora? – Jhorra

+0

@jhorra ... Credo che sia meglio scrivere un nuovo file di migrazione con 'drop_table: table_name' nel metodo' up', e 'create_table: table_name' nel metodo' down' in quel caso ed eseguire la migrazione. In questo modo, qualsiasi altra persona che usa lo stesso progetto farà cadere la tabella, quando usa 'rake db: migrate' – rubyprince

+0

Ok, andrò la nuova rotta di migrazione – Jhorra

3
rake db:rollback STEP=n 

dove n è il numero di passaggi che è necessario eseguire il rollback. Se si lascia l'scendere rotola appena tornato 1.

migrare ad una versione particolare, l'uso:

rake db:migrate:down VERSION=20080906120000 

Se si desidera applicare rapidamente una goccia tavolo, è possibile creare una nuova migrazione, eseguire esso, quindi cancellarlo insieme alla migrazione originale che non desideri più. La sintassi per far cadere una tabella è:

drop_table :table_name 
17

tenta di creare una migrazione vuota e utilizzare:

drop_table :table_name 
-11

È possibile rimuovere una tabella utilizzando rastrello per distruggere il modello:

rails destroy model your_model 
+3

Un modello Rails non è una tabella, né alcuna altra parte di il database. Mentre comanda 'genera modello Foo' crea una migrazione di database corrispondente per creare una tabella per la memorizzazione delle istanze di Foo, comandando' distruggi il modello Foo' non distrugge la tabella. Come dice http://railsforum.com/viewtopic.php?pid=10961#p10961: "Attenzione, però, quando generi un modello, crea una migrazione del database. Se esegui" destroy "su quel modello, esso verrà eliminato il file di migrazione, ma non la tabella del database. ... " –

0

Distruggere il modello non è il modo migliore.

Invece, eseguire il comando in console rotaie: rake db:rollback

(per accedere alla console rotaie, tipo rails c in un terminale come indicato here)

Problemi correlati