ruby-on-rails – Ruby on Rails:使用铲运算符更新模型上的字符
发布时间:2020-12-17 03:12:19 所属栏目:百科 来源:网络整理
导读:我们今天遇到了一个有趣的问题.似乎如果使用铲运算符在ActiveRecord模型上连接字符串属性,它不会使模型变脏.例如: e = Employee.firste.name "asdf"e.name_changed? # returns falsee.changed? # returns false 这是有道理的,因为铲子运算符更新一个字符串
我们今天遇到了一个有趣的问题.似乎如果使用铲运算符在ActiveRecord模型上连接字符串属性,它不会使模型变脏.例如:
e = Employee.first e.name << "asdf" e.name_changed? # returns false e.changed? # returns false 这是有道理的,因为铲子运算符更新一个字符串而不复制它,其中=运算符将复制该字符串.我不知道如果你使用铲子运算符,ActiveRecord怎么可能知道有什么改变. 有没有人见过这个?解决方案是使用=而不是<<连接字符串时? 解决方法
解决方法是你写的.
或者你可以在之前标记你的属性会改变 e = Employee.first e.name_will_change! e.name << "asdf" e.name_changed? # => true 它是API文档中的标记. ::加载ActiveModel脏 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |