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