ruby-on-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
根据保存在数据库中的字符串来调试和更正方法的第一个参数
推荐阅读
- c - C 中的函数仅在存在不相关行时才起作用
- reactjs - Redux 存储呈现倍数状态。正常吗?
- reactjs - jHipster + react 应用程序,将登陆页面更改为新页面
- php - Laravel 验证:如何验证两个相关的外键是否对应
- python - 如何在 Python 中使用分水岭算法分离图像
- ios - iOS 应用程序:如何访问另一个用户保存在 cognito 身份 ID 文件夹下的 S3 对象
- google-api - 日历对象的汇总值
- javascript - css 和 javascript 文件上的 Java Web 应用程序 error_404
- image - 资产 assets/appimage/test.png 在 pubspec.yaml 中不存在警告
- tags - 如何在免费版本中将“潜在客户”选项卡重命名为 bitrix24 中的其他内容