2011-03-19 93 views
0

我有一个名为items的表。我想为9个对象更改description属性(它是一个文本属性)。具体而言,这些对象是Item的子类 - 称为Juice。所以项目表是STI。以下是该项目的示例说明:尝试使用gsub更改属性时出现迁移问题

将所有支出提高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 

回答

0

我有一种预感,j.description返回字符串,而不是实际的结构映射到数据库的副本; gsub!调用改变了错误的对象。

尝试j.description = j.description.gsub(...)

+0

那就是它!你摇滚 – keruilin 2011-03-19 15:07:38

相关问题