微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过 Rails 迁移将文本字段中的符号转换为字符串

我在数据库中有一个文本字段,其中包含符号、字符串、数字等。 我需要更改部分数据: \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

但是,这些值均未更新。你能帮我完成这个迁移吗?谢谢!

解决方法

问题:

  • 您正在为 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 方法的第一个参数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?