美文网首页
2018-07-26-几个特别的回调

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

作者: 护念 | 来源:发表于2018-07-26 08:08 被阅读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

相关文章

网友评论

      本文标题:2018-07-26-几个特别的回调

      本文链接:https://www.haomeiwen.com/subject/mzjvmftx.html