que tenía una migración add_column que funcionaría bien. Sin embargo, después de ejecutarlo y encender una consola, encontraría las columnas first_name y last_name completamente vacías. Intenté usar save!
en su lugar y tuvo el mismo efecto: no se informaron errores. Aquí está el original:Rails 3.1: No se puede escribir en la columna en la misma migración que se suma que
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
también pensé que esto podría haber algún problema de la carga de clases, por lo que inserta la línea User
para obligar a la clase de usuario para recargar antes del bucle. No dados.
Cuando dividir este en dos migraciones, se logró el efecto deseado. ¿Alguien tiene una explicación para esto? Juro que incluso hice esto en el mismo proyecto con migraciones pasadas.
Otras notas: Idear para el motor de usuario, añaden las nuevas columnas a attr_accessible
en la clase de usuario antes de ejecutar la migración.
mu es demasiado corto tiene una respuesta fantástica para explicar lo que está pasando y qué hacer, pero también me gustaría recomendar la división de estos dos en diferentes migraciones. Crea columnas en una, rellena en otra. Esto evita el problema que está viendo y hace que las reversiones sean menos propensas a errores. –