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
¿Fue útil?

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
scroll top