estoy usando Rails 3.2 y tienen una migración que contiene el código:Model.reset_column_information no recargar columnas en los carriles de migración
add_column :users, :gift_aid, :integer, :default => 2
# reset columns
User.reset_column_information
... code here to load legacy data from sqlite3 database ...
# now create a user with the loaded column data
user = User.create(...other cols...,
:gift_aid => migrated_gift_aid_column_data,
...other cols...)
y me sale unknown attribute: gift_aid
cuando se ejecuta la migración. User.column_names
muestra la misma lista antes y después de la llamada al reset_column_information
.
Curiosamente, cuando dejo caer la columna manualmente en mysql y vuelvo a ejecutar la migración, funciona como se esperaba. Comenzar desde la primera migración nuevamente con una base de datos vacía y no funciona, por lo que tiene que ver con ejecutar todas las migraciones en lugar de la única.
Tengo un par de migraciones anteriores en el modelo de usuario, ambas incluyen reset_column_information
y ambas funcionan bien.
realmente estoy rascándome la cabeza de éste - ¿Alguien tiene alguna idea
Creo que puede estar en lo cierto. De hecho, recibí dos llamadas a 'User.reset_column_information' en dos migraciones diferentes y fue la segunda que falló. Lo arreglé reorganizando mis migraciones, así que solo tuve una llamada a 'reset_column_information' (porque todavía tengo que implementar el sitio por lo que no hay problema para volver atrás). Esta solución parece que también podría funcionar. Lo probaré si tengo la oportunidad. – Iain
Puedo confirmar que esto hace bien el trabajo. Parece que con migraciones largas y múltiples cambios en un modelo solo funciona el primer trabajo 'reset_column_information'. ¡Borrar el caché de esquema hace que funcione bien! Gracias :) – Iain
¡Muchas gracias! Esto me estaba sacando de quicio ya que los documentos de Rails claramente escriben algo diferente -> http://guides.rubyonrails.org/migrations.html#using-models-in-your-migrations – hrdwdmrbl