美文网首页
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