[ROR] ActiveSupport::Callbacks的使用

13 篇文章 0 订阅

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值