2011-08-18 16 views
6

Tengo una tabla que creé usando las migraciones, ahora quiero deshacerme de esta tabla. Estoy bastante seguro de que puedo retroceder esa migración, pero no puedo encontrar la sintaxis para hacerlo. Encontré esta pregunta al buscar Rails DB Migration - How To Drop a Table?Rails 3: suelte una tabla usando la migración

pero básicamente dice que puede encontrar lo que necesita y proporciona un enlace. Leí ese enlace y no vi nada que diga cómo hacerlo. Vi trozos de él, pero no sé cómo juntarlos.

Veo en la migración que tiene un método selfdowndown, realmente solo necesito saber cómo llamarlo.

Respuesta

8

puede revertir la última migración con:

rake db:rollback

que se ejecutará el método self.down, que debe ser drop_table :table_name

+0

¿Y si era una migración corría el mes pasado y yo He hecho un montón más desde entonces? – Jhorra

+0

@jhorra ... Creo que es mejor escribir un nuevo archivo de migración que tenga 'drop_table: table_name' en el método' up', y 'create_table: table_name' en el método' down' en ese caso y ejecutar la migración. De esta forma, cualquier otra persona que use el mismo proyecto obtendrá la tabla caída, cuando use 'rake db: migrate' – rubyprince

+0

Bien, iré a la nueva ruta de migración – Jhorra

3
rake db:rollback STEP=n 

donde n es la cantidad de pasos que debe retroceder. Si deja el PASO fuera de él simplemente se deshace 1.

para migrar a una versión particular, el uso:

rake db:migrate:down VERSION=20080906120000 

Si desea aplicar rápidamente una caída de mesa, se podría crear una nueva migración, ejecute y luego elimínelo junto con la migración original que ya no desea. La sintaxis para eliminar una tabla es:

drop_table :table_name 
17

intenta crear una migración y uso vacíos:

drop_table :table_name 
-11

Puede quitar una tabla usando el rastrillo para destruir el modelo:

rails destroy model your_model 
+3

Un modelo de Rails no es una tabla, ni ninguna otra parte de la base de datos. Mientras que el comando 'generate model Foo' crea una migración de base de datos correspondiente para crear una tabla para almacenar instancias de Foo, el comando' destroy model Foo' no destruye la tabla. Como dice http://railsforum.com/viewtopic.php?pid=10961#p10961: "Pero tenga cuidado: cuando genera un modelo, crea una migración de base de datos. Si ejecuta 'destruir' en ese modelo, se eliminará el archivo de migración, pero no la tabla de la base de datos ... " –

0

Destruyendo el modelo no es la mejor manera.

su lugar, ejecute este comando en la consola rieles: rake db:rollback

(para acceder a la consola de raíles, tipo rails c en un terminal como se muestra here)

Cuestiones relacionadas