我想了解这两种方法之间的区别是什么。 下面是每个文档:
https://apidock.com/rails/v4.2.7/ActiveModel/Dirty/previous_changes
https://apidock.com/rails/v4.2.7/ActiveModel/Dirty/changes
在我看来,阅读本文档,经过previous_changes
是后的变化完成后,在什么意义变更after_*
过滤器,而changes
是什么将被改变,这意味着它是一个有用的before_*
过滤器。
我误解呢?
是的,你的理解是正确
这些脏对象的方法
changes
是用于了解,如果你尝试保存的对象会发生变化previous_changes
是用于了解反映通过保存对象的变化。
但是,如果你尝试重新加载对象既changes
和previous_changes
将返回空哈希{}作为记录的新副本正在从数据库中提取
例如,用户(ID:1,名称: 'Nimish',年龄:24,电子邮件: 'test@example.com')
user = User.find(1)
user.changes #Will output => {}
user.previous_changes #Will output => {}
user.name = 'Test User'
user.changes #Will output => {name: ['Nimish', 'Test User']}
user.previous_changes #Will output => {}
user.save
user.changes #Will output => {}
user.previous_changes #Will output => {name: ['Nimish', 'Test User']}
user.reload
user.changes #Will output => {}
user.previous_changes #Will output => {}
文章来源: Activerecord callback, previous_changes vs. changes