Ruby on Rails中如何解决模型字符串字段保存失败的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计245个文字,预计阅读时间需要1分钟。
使用代码更改视频链接为HTTPS,并保存:
pythonvideo=Video.find(79)video.url=video.url.replace('http', 'https')video.save()
查看我的服务器控制台,当这个请求发生时,我看到了以下信息:+ Video Load (48.7ms) SELECT * FROM `videos` WHERE `videos`.`id`=79 LIMIT 1 (43.3ms)
video = Video.find(79) video.url.sub! "example.com" video.save
我知道了:
(40.6ms) BEGIN SQL (41.8ms) UPDATE `videos` SET `url` = "example.com", `updated_at` = '2014-03-18 14:52:22' WHERE `videos`.`id` = 79 (57.8ms) COMMIT
我一直在与这个无休止的斗争.有谁知道发生了什么?
因为您使用sub!就地修改了字符串,所以Active Record为您生成的url =方法永远不会被调用,所以它不知道您已经修改过它.您可以使用video.url = video.url.sub …方法,也可以使用attribute_will_change!该特定属性的方法:
video = Video.find(79) video.url_will_change! video.url.sub! "http", "https" video.save
本文共计245个文字,预计阅读时间需要1分钟。
使用代码更改视频链接为HTTPS,并保存:
pythonvideo=Video.find(79)video.url=video.url.replace('http', 'https')video.save()
查看我的服务器控制台,当这个请求发生时,我看到了以下信息:+ Video Load (48.7ms) SELECT * FROM `videos` WHERE `videos`.`id`=79 LIMIT 1 (43.3ms)
video = Video.find(79) video.url.sub! "example.com" video.save
我知道了:
(40.6ms) BEGIN SQL (41.8ms) UPDATE `videos` SET `url` = "example.com", `updated_at` = '2014-03-18 14:52:22' WHERE `videos`.`id` = 79 (57.8ms) COMMIT
我一直在与这个无休止的斗争.有谁知道发生了什么?
因为您使用sub!就地修改了字符串,所以Active Record为您生成的url =方法永远不会被调用,所以它不知道您已经修改过它.您可以使用video.url = video.url.sub …方法,也可以使用attribute_will_change!该特定属性的方法:
video = Video.find(79) video.url_will_change! video.url.sub! "http", "https" video.save

