Я создаю множество миграций, некоторые из которых являются стандартными миграциями «create table» или «alter table», а некоторые из них изменяют данные. Я использую свои реальные модели ActiveRecord для изменения данных, а-ля:Как заставить ActiveRecord перезагрузить класс?
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Проблема заключается в том, что если я загрузить класс блога, а затем изменить таблицу, а затем снова использовать класс Блог, модели имеют старых табличных определений и не может сохранить в новой таблице. Есть ли способ перезагрузить классы и их определения атрибутов, чтобы я мог их повторно использовать?
Остерегайтесь моделей с отношениями. Если 'class Blog; own_to Owner; end', то вам может понадобиться 'Owner.reset_column_information' в дополнение к блогу. –
Сбросить все столбцы! 'ActiveRecord :: Base.descendants.each {| c | c.reset_column_information} ' – zm1th
Throw' Rails.application.eager_load! 'перед любыми вызовами потомков для исправления проблем с неавтозагрузочными моделями – elju