加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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脏

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读