Ho avuto una migrazione add_column che funzionava correttamente. Tuttavia, dopo averlo eseguito e acceso una console, troverei le colonne first_name e last_name completamente vuote. Ho provato ad utilizzare save!
invece e ha avuto lo stesso effetto - nessun errore segnalato. Ecco l'originale:Rails 3.1: impossibile scrivere nella colonna nella stessa migrazione che lo aggiunge
class UserAddFirstNameAndLastName < ActiveRecord::Migration
def change
# add column first name, last name string
add_column :users, :first_name, :string
add_column :users, :last_name, :string
User.all.each do |u|
u.first_name = 'first name'
u.last_name = 'last name'
u.save
end
end
end
Ho anche pensato che questo potrebbe essere qualche problema di caricamento delle classi, così ho inserito la linea User
per forzare la classe utente per ricaricare prima del ciclo. Niente da fare.
Quando ho suddiviso questo in due migrazioni, l'effetto desiderato è stato raggiunto. Qualcuno ha una spiegazione per questo? Giuro di averlo fatto anche nello stesso progetto con le migrazioni passate.
Altre note: Devise per il motore utente, ha aggiunto le nuove colonne a attr_accessible
in Classe utente prima di eseguire la migrazione.
mu è troppo breve ha una risposta fantastica per spiegare cosa sta succedendo e cosa fare ma ti consigliamo anche di suddividere questi due in diverse migrazioni. Crea colonne in una, inseriscile in un'altra. Ciò impedisce il problema che stai vedendo e rende i rollback meno soggetti a errori. –