Je crée un tas de migrations, dont certaines sont des migrations standard "créer une table" ou "modifier une table", et certaines d'entre elles modifient des données. J'utilise mes modèles ActiveRecord réels pour modifier les données, à la:Comment forcer ActiveRecord à recharger une classe?
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Le problème est que si je charge la classe de blog, puis modifier la table, puis utilisez la classe Blog à nouveau, les modèles ont la anciennes définitions de table et ne peut pas enregistrer dans la nouvelle table. Existe-t-il un moyen de recharger les classes et leurs définitions d'attributs afin que je puisse les réutiliser?
Attention aux modèles avec relations. Si 'class Blog; belongs_to Propriétaire; end', alors vous devrez peut-être 'Owner.reset_column_information' en plus de Blog. –
Réinitialiser toutes les colonnes! 'ActiveRecord :: Base.descendants.each {| c | c.reset_column_information} ' – zm1th
Lance' Rails.application.eager_load! 'devant tous les appels aux descendants pour corriger les problèmes avec les modèles non-auto-chargés – elju