0

私はアイテムと呼ばれるテーブルを持っています。9 つのオブジェクトの説明属性 (テキスト属性) を変更したいと考えています。具体的には、これらのオブジェクトは、Juice と呼ばれる Item のサブクラスです。したがって、items テーブルは 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
4

1 に答える 1

1

j.descriptionデータベースにマップする実際の構造ではなく、文字列のコピーを返す予感があります。gsub!呼び出しは間違ったオブジェクトを変更します。

試すj.description = j.description.gsub(...)

于 2011-03-19T14:58:35.470 に答える