rails 数据变化的监控

Dirty objects

Dirty Objects功能可以追踪Model的属性是否有改变:

person = Person.find_by_name('Uncle Bob')
person.changed? # => false 没有改变任何值

# 让我们来改一些值
person.name = 'Bob'
person.changed? # => true 有改变
person.name_changed? # => true 这个属性有改变
person.name_was # => 'Uncle Bob' 改变之前的值
person.name_change # => ['Uncle Bob', 'Bob']
person.name = 'Bill'
person.name_change # => ['Uncle Bob', 'Bill']

# 储存进资料库
person.save
person.changed? # => false
person.name_changed? # => false

# 看看哪些属性改变了
person.name = 'Bob'
person.changed # => ['name']
person.changes # => { 'name' => ['Bill', 'Bob'] }

注意到Model资料一旦储存进资料库,追踪记录就重算消失了。

什么时候会用到这个功能呢?通常是在储存进资料库前的回呼、验证或Observer中,你想根据修改了什么来做些动作,这时候Dirty

 Objects功能就派上用场了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值