Rails的after_commit和transaction_include_any_action?
来源:互联网 发布:2016淘宝刷钻价格表 编辑:程序博客网 时间:2024/05/20 00:17
了解rails的,都知道activerecord有一个after_commit的回调方法,可以在这个方法里做一下提交后的操作,比如同步数据等。
但是如果要区分本次commit是create、update还是delete怎么做呢?
有两种方式:
第一种方式是写多个方法分布处理
after_commit :hook_on_create, :on => :create after_commit :hook_on_update, :on => :update after_commit :hook_on_destroy, :on => :destroy
通过这样可以写三个回调方法分别处理不同的数据。
第二种方式是在同一个方法里,通过判断当前操作的类型来分别处理,这个时候transaction_include_any_action?就要上场了。
after_commit :sync_data private def sync_data if(transaction_include_any_action?([:create])) do_something1 return end if(transaction_include_any_action?([:update])) do_something2 return end if(transaction_include_any_action?([:destroy])) do_something3 return end end
另外transaction_include_any_action?是rails4的方法,rails3中,对应的方法是transaction_include_action?
这两种方法我个人还是推荐第一种,毕竟解耦和代码就是注释是rails的设计原则,后者里面的判断逻辑还是要看代码才行。
阅读全文
0 0
- Rails的after_commit和transaction_include_any_action?
- Ruby和Rails的缺点
- Rails的事务和锁
- ruby on rails入门系列--ruby和rails的安装
- MySQL半同步复制--after_commit
- J2EE 和 Ruby on Rails 的选择
- Rails的国际化和本地化技术教程
- FCKEidtor 和 Ruby On Rails 的整合
- ruby和rails的安全性问题学习
- rails 和fckeditor不兼容的解决办法
- rails使用sqlite3和mysql的问题
- 安装不同的 ruby 和 rails 版本
- Rails中Bootstrap的安装和使用
- ruby on rails的上传和下载
- 1---------- ruby和rails的安装
- Rails 和 Django 的深度技术对比
- Rails中Bootstrap的安装和使用
- Rails中destroy_all和delete_all的差别
- sift与surf比较
- Veloctiy入门的实例
- 数据库设计六范式
- 微信公众号get与post请求实现模版
- LeetCode.728 Self Dividing Numbers
- Rails的after_commit和transaction_include_any_action?
- mt2503[SIM]如何获取用户的电话号码MSISDNs
- Java并发工具包指南
- Python 字符编码详解
- angular 1.6 及以上路由无法跳转问题
- 多github帐号的SSH key切换
- 欢迎使用CSDN-markdown编辑器
- 为什么全连接层输入需要固定尺度
- 分布式监控系统Zabbix3.2跳坑指南