Ruby on Rails中如何解决模型字符串字段保存失败的问题?

更新于
2026-10-09 20:24:39
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计245个文字,预计阅读时间需要1分钟。

Ruby on Rails中如何解决模型字符串字段保存失败的问题?

使用代码更改视频链接为HTTPS,并保存:

Ruby on Rails中如何解决模型字符串字段保存失败的问题?

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

标签:Rails字符

本文共计245个文字,预计阅读时间需要1分钟。

Ruby on Rails中如何解决模型字符串字段保存失败的问题?

使用代码更改视频链接为HTTPS,并保存:

Ruby on Rails中如何解决模型字符串字段保存失败的问题?

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

标签:Rails字符