Estoy creando un conjunto de migraciones, algunas de las cuales son migraciones estándar de "crear tabla" o "modificar tabla", y algunas de las cuales modifican datos. Estoy usando mis modelos reales ActiveRecord para modificar los datos, al estilo de:¿Cómo forzo a ActiveRecord a volver a cargar una clase?
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
El problema es que si me carga la clase Blog, a continuación, modificar la tabla, a continuación, utilizar la clase Blog de nuevo, los modelos tienen la definiciones de tablas antiguas, y no se puede guardar en la nueva tabla. ¿Hay alguna manera de volver a cargar las clases y sus definiciones de atributos para poder reutilizarlas?
Tenga cuidado con los modelos con relaciones. Si 'clase Blog; belongs_to Propietario; end', luego puede necesitar 'Owner.reset_column_information' además de Blog. –
Restablecer todas las columnas! 'ActiveRecord :: Base.descendants.each {| c | c.reset_column_information} ' – zm1th
Tirar' Rails.application.eager_load! 'delante de cualquier llamada a descendientes para solucionar problemas con modelos no autocargados – elju