Estoy de acuerdo con los comentarios hasta el momento. La idea de las migraciones es simplificar la adaptación fluida de su esquema de datos para adaptarse a su aplicación, ya que desea agregar nuevos campos. Es un sistema simple y hermoso.
Así que sí, puede (y debe) usar rails generate migration...
, ya que no solo genera el código correcto en muchos casos comunes, sino que también realiza un seguimiento de las migraciones que se han ejecutado en diferentes versiones de la base de datos. Ver http://guides.rubyonrails.org/migrations.html#creating-a-migration
Un flujo de trabajo común podría ser algo como esto:
- crear un nuevo modelo, por ejemplo usuario con campos como nombre, apellido, nombre_usuario
- esto creará una migración asociada, que se puede ejecutar usando
bundle exec rake db:migrate
- su esquema de base de datos se actualizará
- usted decide que desea información adicional, como fecha de nacimiento, así que ejecute
rails generate migration AddBirthdateToUser birthdate:date
. Para algunas operaciones simples como agregar una columna, índice, etc., se generará el código de migración completo; en otros casos, deberá escribir la migración. Cuando termine, ejecute la migración.
- Si encuentra un problema en el desarrollo, por ejemplo, un tipo de campo debe ser flotante, no entero, o se olvidó de agregar un índice, puede revertir la migración (
bundle exec rake db:rollback
), corregir la migración y volver a ejecutarla.
- ejecute sus pruebas (que ejecutarán las migraciones), y cuando todo funcione para usted localmente, compruebe los archivos (incluidas las migraciones) e implemente en un QA o servidor de transición, que tiene su propia copia de la base de datos.
- ejecuta
rake db:migrate
en el servidor de transferencia. Si estás en un equipo y otros desarrolladores han registrado las migraciones, también se ejecutarán. Ahora su código y esquema de datos están sincronizados.
- repetición :-)
No hay nada malo en absoluto correr migraciones durante un despliegue de producción (respetuosamente en desacuerdo con un comentario anterior) - que debe adoptar la idea de que el cambio, incluso los cambios de este tipo (que puede ser increíblemente difícil en otros entornos) son una parte normal de la vida cotidiana de Rails.
Realmente no es demasiado difícil escribir script de migración manualmente. –
cierto, pero por cada cambio que tengo (durante el desarrollo, tengo muchos cambios), necesito bastantes scripts de migraciones AddXToY ... – Karan
Bueno, supongo que podría editar el script de migración original y soltar y volver a cargar la base de datos. – Karan