Problema de migración al tratar de cambiar los atributos usando GSUB
-
27-10-2019 - |
Pregunta
Tengo una mesa llamada elementos. Quiero cambiar el atributo de descripción (es un atributo de texto) para 9 de los objetos. Específicamente, estos objetos son una subclase al artículo, llamado jugo. Entonces la tabla de elementos es STI. Aquí hay una descripción de la muestra del artículo:
Aumentar todos los pagos por 20%.
Ahora, cuando trato de ejecutar la siguiente migración, no puedo obtener la descripción de Dang para actualizar. ¿Algunas ideas? (La versión Rails es 2.3.11.)
class ModifyItemJuiceDescription < ActiveRecord::Migration
def self.up
juices = Juice.all
Juice.transaction do
for j in juices do
puts "Juice description is: #{j.description}."
j.description.gsub!('payouts', 'winnings')
puts "Juice description will be saved as: #{j.description}."
j.save!
puts "Juice description is now: #{j.description}."
puts "======================================================"
end
end
end
def self.down
juices = Juice.all
Juice.transaction do
for j in juices do
puts "Juice description is: #{j.description}."
j.description.gsub!('winnings', 'payouts')
puts "Juice description will be saved as: #{j.description}."
j.save!
puts "Juice description is now: #{j.description}."
puts "======================================================"
end
end
end
end
Solución
Tengo un presentimiento que j.description
Devuelve una copia de la cadena, no la estructura real que se asigna a la base de datos; El gsub! Llamar cambia el objeto incorrecto.
Probar j.description = j.description.gsub(...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow