Проблема миграции при попытке изменить атрибуты с помощью gsub - PullRequest
0 голосов
/ 19 марта 2011

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

Увеличить все выплаты на 20% .

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

1 Ответ

0 голосов
/ 19 марта 2011

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

Попробуйте j.description = j.description.gsub(...)

...