jay*_*del 1 activerecord callback ruby-on-rails-4
我试图了解这两种方法之间的区别是什么.以下是每个文档:
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_*过滤器.
我误解了吗?
Nim*_*pta 10
是的你理解它是正确的
这些是脏对象方法
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 => {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |