Проблема миграции с попыткой изменить атрибуты с использованием GSUB
-
27-10-2019 - |
Вопрос
У меня есть таблица под названием предметы. Я хочу изменить атрибут описания (это текстовый атрибут) для 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(...)
Не связан с StackOverflow