如何解决通过 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 举报,一经查实,本站将立刻删除。