Active Model Dirty changes 相关总结

changes

保存之前有值,保存之后值清空

# attr => [original value, new value]
person.changes # => {}
person.name = 'name1'
person.changes # => { "name" => ["bill", "bob"] }
# before_validation => { "name" => ["bill", "bob"] }
# before_save => { "name" => ["bill", "bob"] }
# before_create => { "name" => [nil, "bob"] }
# after_create => {}
# after_save => {}
# before_commit => {}
# after_commit => {}

previous_changes

保存之后有值

# attr => [original value, new value]
person.previous_changes # => {}
person.name = 'robert'
person.previous_changes # => {}
person.save
person.previous_changes # => {"name" => ["bob", "robert"]}
# before_validation => {}
# before_save => {}
# before_create => {}
# after_create => {"name" => ["bob", "robert"]}
# after_save => {"name" => ["bob", "robert"]}
# before_commit => {"name" => ["bob", "robert"]}
# after_commit => {"name" => ["bob", "robert"]}

changed_attributes

attr => original value

person.changed_attributes # => {}
person.name = 'bob'
person.changed_attributes # => { "name" => "bob" }
# before_validation => { "name" => "bob" }
# before_save => { "name" => "bob" }
# before_create => { "name" => nil }
# after_create => {}
# after_save => {}
# before_commit => {}
# after_commit => {}

回调

before_validation :before_validation_func
before_create :before_create_func
after_create :after_create_func
before_save :before_save_func
after_save :after_save_func
before_commit :before_commit_func
after_commit :after_commit_func

def before_validation_func
  pp "changed_attributes before validation: #{changed_attributes}"
  pp "changes before validation: #{changes}"
  pp "previous_changes before validation: #{previous_changes}"
end

def before_create_func
  pp "changed_attributes before create: #{changed_attributes}"
  pp "changes before create: #{changes}"
  pp "previous_changes before create: #{previous_changes}"
end

def after_create_func
  pp "changed_attributes after create: #{changed_attributes}"
  pp "changes after create: #{changes}"
  pp "previous_changes after create: #{previous_changes}"
end

def before_save_func
  pp "changed_attributes before save: #{changed_attributes}"
  pp "changes before save: #{changes}"
  pp "previous_changes before save: #{previous_changes}"
end

def after_save_func
  pp "changed_attributes after save: #{changed_attributes}"
  pp "changes after save: #{changes}"
  pp "previous_changes after save: #{previous_changes}"
end

def before_commit_func
  pp "changed_attributes before commit: #{changed_attributes}"
  pp "changes before commit: #{changes}"
  pp "previous_changes before commit: #{previous_changes}"
end

def after_commit_func
  pp "changed_attributes after_commit : #{changed_attributes}"
  pp "changes after commit: #{changes}"
  pp "previous_changes after commit: #{previous_changes}"
end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值