[ROR] ActiveSupport::Callbacks的使用

来源:互联网 发布:淘宝物流业务流程图 编辑:程序博客网 时间:2024/06/06 05:30

ActiveSupport::Callbacks  提供了一个独立于rails 的回调功能

所谓的回调 :就是在执行一个方法的时候,自动的回调执行另一个对象,为什么说是对象,而不是说方法

因为 自动回调的不仅仅 是 方法,也可以是 代码块

那么如何使用 ActiveSupport::Callbacks  来创建回调呢? 

  1 require "active_support/all"                                                                            2 class Mod  3   include ActiveSupport::Callbacks  4   define_callbacks :update  5   set_callback :update, :before, :update_message  6   7   def update_message  8     puts "我是在update方法之前调用"  9   end 10  11   def update 12     run_callbacks :update do 13       puts "开始执行update本身的逻辑" 14     end 15   end 16  17   set_callback :update, :after do 18     puts "我是在Update方法逻辑结束之后调用" 19   end 20  21 end 22  23  24 Mod.new.update


=>结果:

我是在update方法之前调用开始执行update本身的逻辑我是在Update方法逻辑结束之后调用

首先引入 active_support 库 或者说 active_support的gem

代码中: 意图是在执行 update 方法之前 来执行 一个对象(可以是方法,也可以是代码块),总之需要执行另一个逻辑

在结束 update 方法后执行另一个逻辑


首先看  define_callbacks

他的作用 是用来 声明 一个 需要执行 回调的方法(这里声明的回调方法是 update)

在 update 方法中 ,run_callbacks :update  是用来执行回调方法

而需要回调的对象创建  使用的是: set_callback  

set_callback 有三个参数,第一个参数表示的需要回调的方法(这里是update),回调执行的时间(before,after)之前、之后等

第三个参数执行的 对象


所以上面的代码很好 理解就是 ,我定义了一个 update 方法,需要在调用update 方法之前 回调 update_message 方法,update方法结束后回调一个代码块

然后得出了结果


1 0
原创粉丝点击