2018-07-26-几个特别的回调

2018-07-26  本文已影响0人  护念

after_initialize

它会在数据初始化和 数据库中加载数据 时执行。

after_find

在找到数据后执行

after_touch

1、在执行touch方法后执行
2、如果在关联中开启,关联model也会执行

class User < ApllicationRecord
  has_many :products
  after_touch do
    puts 'user 的 touch 回调'
  end
end

class Product < AppliactionRecord
  belongs_to :user,touch: true # 注意这里,需要开启才会触发到user
  after_touch do
    puts 'product 的touch 回调'
  end
end

p = Product.first
p.touch
#product 的touch 回调
#user 的 touch 回调

after_commit/rollback

1、它们在数据库变更已经提交或回滚后才会执行(也就是已经引发数据库的改动后)
2、一般用于和数据库事务系统之外的交互(目的是防止在事务中发生异常,而提前于外部系统发生数据改变,回滚时,外部系统不能正常回滚,导致数据不一致)
3、通常还有下面(带场景的触发)
after_create_commit
after_update_commit
after_destroy_commit

上一篇下一篇

猜你喜欢

热点阅读