ruby-on-rails – 模型中的Rails字符串字段不保存
发布时间:2020-12-17 01:32:55 所属栏目:百科 来源:网络整理
导读:video = Video.find(79)video.url.sub! "http","https"video.save 看看我的服务器控制台,当我发出这个请求时,我看到了这个: Video Load (48.7ms) SELECT `videos`.* FROM `videos` WHERE `videos`.`id` = 79 LIMIT 1(43.3ms) BEGIN(46.4ms) COMMIT 注意,即
video = Video.find(79) video.url.sub! "http","https" video.save 看看我的服务器控制台,当我发出这个请求时,我看到了这个: Video Load (48.7ms) SELECT `videos`.* FROM `videos` WHERE `videos`.`id` = 79 LIMIT 1 (43.3ms) BEGIN (46.4ms) COMMIT 注意,即使子命令成功找到匹配并进行替换,也不会进行UPDATE调用. 但是,做: video.url = "https://example.com" video.save 我知道了: (40.6ms) BEGIN SQL (41.8ms) UPDATE `videos` SET `url` = "https://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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |