gpt4 book ai didi

ruby-on-rails - ruby rails : Using shovel operator to update a string attribute on a model does not make the model dirty

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:29 29 4
gpt4 key购买 nike

今天我们遇到了一个有趣的问题。似乎如果您使用 shovel 运算符连接 ActiveRecord 模型上的字符串属性,它不会使模型变脏。例如:

e = Employee.first
e.name << "asdf"
e.name_changed? # returns false
e.changed? # returns false

这是有道理的,因为 shovel 运算符更新字符串而不复制它,而 += 运算符将复制字符串。如果您使用 shovel 运算符,我不明白 ActiveRecord 怎么可能知道发生了什么变化。

有没有人看过这个?是只使用 += 的解决方案吗?而不是 <<连接字符串时?

最佳答案

解决方案是您编写。

或者你可以在此之前标记你的态度 will_change

e = Employee.first
e.name_will_change!
e.name << "asdf"
e.name_changed? # => true

API文档上有标注。 ActiveModel::脏

关于ruby-on-rails - ruby rails : Using shovel operator to update a string attribute on a model does not make the model dirty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137993/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com