通过 rails 迁移将文本字段中的符号转换为字符串

Turn symbol into string in a text field through rails migration

我在数据库中有一个包含符号、字符串、数字等的文本字段。 我需要更改部分数据: \nassigned_x:\n- :assigned_y\n- :assigned_to\n- :follow\n

例如,我需要将这些符号更改为数据库中的字符串,并为此创建了一个迁移:

def change
    statuses = [:assigned_x, :assigned_y, :follow]
    setting = Setting.last.data
    statuses.each do |status|
      setting.gsub!(status.to_s, status.to_s) if setting.include?(status.to_s)
    end
  end

但是,这些值中的 none 已更新。你能帮我完成这次迁移吗?谢谢!

问题:

  • 您正在为 setting 变量分配一个属性并尝试使用 gsub!
  • 保存它
  • gsub! 从不在数据库中保存任何内容
  • 此外,数据永远不会保存在数据库中,直到您 运行 object.save

试试这个:

def change
  statuses = [:assigned_x, :assigned_y, :follow]
  setting_obj = Setting.last
  setting_data = setting_obj.data
  statuses.each do |status|
    next unless setting_data.include?(status.to_s)

    setting_data = setting_data.gsub(status.to_s, status.to_s)
  end
  setting_obj.data = setting_data
  setting_obj.save
end

您可能需要根据保存在数据库中的字符串

调试并更正第一个参数为gsub方法