2012-03-14 15 views
9

Estoy aprendiendo rails, y me encontré con Migrations. Parece que cada vez que deseo editar un modelo, necesitaría agregar un script de migración, aunque todavía no estoy en producción.Rails - Generando script de migración del modelo

¿Puedes editar tu modelo, agregar todos los atributos que necesites y, antes de soltarlo, tener la secuencia de comandos de migración autogenerada?

Gracias!

+1

Realmente no es demasiado difícil escribir script de migración manualmente. –

+0

cierto, pero por cada cambio que tengo (durante el desarrollo, tengo muchos cambios), necesito bastantes scripts de migraciones AddXToY ... – Karan

+2

Bueno, supongo que podría editar el script de migración original y soltar y volver a cargar la base de datos. – Karan

Respuesta

3

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.

4

Si utiliza los rieles 3+ es posible que desee considerar DataMapper en lugar de ActiveRecord. Le permite definir el modelo de datos en el modelo en lugar de múltiples archivos de migración. Según tengo entendido, DataMapper le permite generar migraciones a partir de cambios.

Este es un patrón probado y de confianza que se utiliza a menudo en la comunidad de ORM más amplia.

Cuestiones relacionadas