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

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,500评论 8赞 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,913评论 1赞 32
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,519评论 2赞 89
  • 有时候,我们觉得可能要很长时间,有时候,我们觉得可能很容易,往往事与愿违。不知道下一刻遇见了谁,不知道下一刻的某个...
    樱桃红烧肉丸子阅读 184评论 0赞 0
  • 希希回来了,我马上从沙发上弹起,走上前递过拖鞋,接过她的提包,温柔地对她说:“刚做好饭,快去吃吧。” ...
    哀牢阅读 443评论 0赞 0

友情链接更多精彩内容