【问题标题】:Migration issue with trying to change attributes using gsub尝试使用 gsub 更改属性的迁移问题
【发布时间】:2011-03-19 14:48:01
【问题描述】:

我有一个名为 items 的表。我想更改 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

【问题讨论】:

    标签: ruby-on-rails migration gsub sti


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2018-04-20
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多