2012-04-12 14 views
7

Creé bastantes migraciones desde el comienzo de mi aplicación Rails. Algunos de ellos solo para fines de prueba. Ahora tengo muchas migraciones que son totalmente inútiles (por ej .: crear una tabla en una migración y soltarla en la siguiente).Eliminar la migración pasada en raíles

Como schema.rb se actualizan una vez que se ejecuta db: migrate, ¿es posible eliminar todas las migraciones y comenzar desde el contenido real de schema.rb?

+1

podría usar 'rake db: schema: load' –

+0

y eliminar todos los archivos de migración? – Luc

Respuesta

8

Sí, puede (y probablemente debería) eliminar las migraciones anteriores. Llegará un punto en el que las migraciones anteriores ya no funcionarán, ya que el código del modelo dependerá de las versiones posteriores de su esquema.

Así que por todos los medios eliminar las migraciones (que los tiene bajo control de origen, ¿verdad?), Y el uso de

rake db:schema:load 

para inicializar una nueva base de datos si es necesario.

ACTUALIZACIÓN: Los carriles de guía tiene ahora algo similar que decir acerca de esto: http://guides.rubyonrails.org/active_record_migrations.html#schema-dumping-and-you

+0

Utilice 'rake db: schema: load' en lugar de' rake db: migrate'? – methyl

+0

No. 'rake db: schema: load' vuelca su base de datos actual y la vuelve a crear desde' schema.rb'. 'rake db: migrate' aplica cualquier migración pendiente a la base de datos existente. – Thilo

+0

¿Por qué es importante tenerlos en control de fuente si tengo la última versión de schema.rb? ¿No debería ser ese el chico importante? – Luc

0

una mejor manera de hacer esto es hacer lo siguiente ...

Una vez que llegue un hito en su proyecto, y está seguro de que no desea migrar por debajo de esa versión del DB, puede reemplazar su gran cantidad de archivos de migración con un solo archivo de migración, que luego puede usar como la nueva migración "inicial" que agrupa todo lo que se hizo hasta esa fecha.

Después de eso: ¡continúe usando migraciones en su proyecto!

Nunca edite su archivo schema.rb a mano ... y nunca cargue el archivo db/schema.rb a menos que sea para algo así como la recuperación de desastres.

No tiene garantía del 100% de que el archivo que está registrado en el control de versiones sea la versión más reciente o incluso la correcta.

Es mucho más seguro migrar hacia arriba y hacia abajo, y simplemente agrupar una gran cantidad de migraciones en un solo archivo de migración.

Al cargar manualmente el archivo schema.rb, elude por completo la red de seguridad que proporcionan las migraciones. Esa no es una buena idea.

Cuestiones relacionadas