Estoy tratando de convertir una columna en mi aplicación Rails, por razones de argumento, pretendamos que estoy tratando de cambiar la columna age
en mi tabla users
por una representación de cadena en lugar de una int.¿Se pueden usar las migraciones de Can Rails para convertir datos?
En mi migración tengo esto;
def.self up
add_column :users, :age_text, :string
users = User.find(:all)
users.each do |u|
u.age_text = convert_to_text(u.age)
u.save
end
end
def self.convert_to_text(number)
#code here to convert 1 to 'one' etc
end
Pero parece que no funciona, ¿eso es lo que intento aquí incluso con las migraciones?
lo que sería una manera mejor? – Kirschstein
Depende de lo que intenta hacer ... Si es una actualización simple que debe realizarse, simplemente puede ejecutar un comando SQL con el método de ejecución (ejecutar 'actualizar conjunto de usuarios colA = 1'). De nuevo, solo ten cuidado; si tiene 10k usuarios en la tabla Usuarios, pasar por cada uno de ellos con la migración anterior probablemente tomará mucho tiempo. –
A veces necesitará esto también User.connection.schema_cache.clear! – hrdwdmrbl