[Ruby On Rails]Rails中的ActiveSupport::Callbacks的使用
来源:互联网 发布:iphone 同步软件 编辑:程序博客网 时间:2024/05/29 08:30
回调是在对象在运行的时候会自动关联的钩子,很典型的使用方法是在父类提供一组与其功能相关的一组回调,子类在可以增加一些功能在父类的方法上,而不需要重写父类的方法,这样也保护了父类的方法的整洁性,而不被破坏
一般我们在model中经常会使用 这种callbacks方法
如:before_save after_save before_destroy 等这样的都是,这样既不用 去重写 save destroy 方法,也能去改变或者实现一些功能
如果真的没有办法 非要去修改,建议也是 用 module 来规范作用域,然后去修改,不要污染其他的作用域
如:
module A
refine String do
def add2
self*2
end
end
end
module B
using A
"a".add2
end
end
这样在使用的时候就不会污染全局了
那么 使用ActiveSupport::Callbacks 怎么来定义自己的 callback
class Record include ActiveSupport::Callbacks define_callbacks :save def save run_callbacks :save do puts "- save" end endendclass PersonRecord < Record set_callback :save, :before, :saving_message def saving_message puts "saving..." end set_callback :save, :after do |object| puts "saved" endendperson = PersonRecord.newperson.save
输出
saving...
- save
saved
- save
saved
我们来看 首先我们需要做的一件事情是 父类的 Record 有一个 save 方法 ,我们 可能在子类中需要调用这个save方法,并且能不使用 打开类的方法重新save方法 来 给save方法增加一些功能
声明 define_callbacks :save
在调用save方法的时候 先检查它的 callback, run_callbacks :save
set_callback save方法回调执行的具体内容
如 after 是在 调用save方法之后 需要执行的内容
before 是在调用之前需要执行的内容
0 0
- [Ruby On Rails]Rails中的ActiveSupport::Callbacks的使用
- ruby on rails使用
- Ruby On Rails--Active Record Callbacks(回调)
- ruby on rails 的redis 使用
- Ruby on Rails 使用 Cookie 的方法
- ruby on rails 中render的使用
- ruby on rails 中脚手架的使用
- pundit的使用ruby on rails
- Ruby On Rails -- Rails的安装
- ruby on rails 使用TinyMCE
- Ruby on Rails 使用 Ajax
- Ruby on Rails 使用问题
- [ROR] ActiveSupport::Callbacks的使用
- ruby on rails 的书
- Ruby on Rails的神奇
- ruby on rails的session
- ruby on rails的session
- Ruby & Rails on Rails 進階書單
- TextControl 单位
- 详解BarTender数据源操作列表
- POJ
- Spring Boot 学习3--热部署
- 20.Unity3D商业游戏源码研究-变身吧主公-战斗-MainPlayerStateIdle
- [Ruby On Rails]Rails中的ActiveSupport::Callbacks的使用
- 关于HTTP协议,一篇就够了
- 【JavaScript】第一个Demo和一个问题
- jvm中堆和非堆的划分
- 到底什么时候该使用MQ?
- C++读取txt文件
- java 线程 synchronized详解
- 图像的通道(channels)问题
- 文章标题