Ruby 如何防止更新属性!缩短回调?
我想在保存事件之前进行检查,以便在每次更新特定字段时都能发出警报。 我试图使用“changed”来检测它,但更新了数据库验证的快捷方式,因此我无法使用changed 例如,这会注意到更改:Ruby 如何防止更新属性!缩短回调?,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想在保存事件之前进行检查,以便在每次更新特定字段时都能发出警报。 我试图使用“changed”来检测它,但更新了数据库验证的快捷方式,因此我无法使用changed 例如,这会注意到更改: m = Player.new m.name = "Tom" m.changed? => true 但这并不是: m = Player.new m.update_attributes!(name: "John") m.changed? => false 有什么办法可以改变吗?已更改?
m = Player.new
m.name = "Tom"
m.changed?
=> true
但这并不是:
m = Player.new
m.update_attributes!(name: "John")
m.changed?
=> false
有什么办法可以改变吗?
已更改?
如果对象上存在非持久性更改,则返回true
。调用后,对象是最新的,因此返回false
。检查ActiveModel::Dirty
模块,其中有几个实用程序用于处理对象的更改<代码>以前的更改可以做到这一点,也许有一种更适合您的用例的方法。记住,更改?
指自上次保存点以来所做的更改。正在调用更新属性代码>具有保存和应用更改的效果
已更改?
方法和相关调用将只返回尚未保存的内容。您可以使用
m.attributes = {name: "John"}
是的,我试着改变一下,结果成功了。但是我找到了一个更好的Ruby元编程选项,我最终改变了m.name\u?m、 你叫什么名字