【问题标题】:Activerecord callback, previous_changes vs. changesActiverecord 回调,previous_changes 与更改
【发布时间】:2017-07-10 15:54:06
【问题描述】:
【问题讨论】:
标签:
ruby-on-rails-4
activerecord
callback
【解决方案1】:
是的,你没看错
这些是脏对象方法
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 => {}
注意
您也可以查看this answer 以获得更多帮助。