Проблема миграции с попыткой изменить атрибуты с использованием GSUB

StackOverflow https://stackoverflow.com/questions/5362798

Вопрос

У меня есть таблица под названием предметы. Я хочу изменить атрибут описания (это текстовый атрибут) для 9 объектов. В частности, эти объекты представляют собой подкласс для элемента, называемого соком. Таким образом, таблица предметов STI. Вот образец описания элемента:

Повысить все выплаты 20%.

Теперь, когда я пытаюсь запустить следующую миграцию, я не могу получить описание DANG для обновления. Любые идеи? (Rails версия 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
Это было полезно?

Решение

У меня есть догадка, что j.description Возвращает копию строки, а не фактическую структуру, которая отображается в базе данных; GSUB! вызовать меняет неправильный объект.

Пытаться j.description = j.description.gsub(...)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top