Sto creando un sacco di migrazioni, alcune delle quali sono migrazioni standard "crea tabella" o "modifica tabella", e alcune delle quali modificano i dati. Sto usando il mio modelli reali ActiveRecord per modificare i dati, a la:Come forzare ActiveRecord a ricaricare una classe?
Blog.all.each do |blog|
update_some_blog_attributes_to_match_new_schema
end
Il problema è che se io carico la classe Blog, quindi modificare la tabella, quindi utilizzare di nuovo la classe Blog, i modelli hanno la vecchie definizioni di tabella e non è possibile salvare nella nuova tabella. C'è un modo per ricaricare le classi e le loro definizioni degli attributi così posso riutilizzarle?
Fare attenzione ai modelli con relazioni. Se 'classe Blog; appartiene al proprietario; fine', quindi potrebbe essere necessario 'Owner.reset_column_information' oltre a Blog. –
Ripristina tutte le colonne! 'ActiveRecord :: Base.descendants.each {| c | c.reset_column_information} ' – zm1th
Lancia' Rails.application.eager_load! 'di fronte a qualsiasi chiamata ai discendenti per risolvere i problemi con i modelli non autoloaded – elju