工作生活

术-机制:rails中的around回调

2019-06-29  本文已影响0人  稻草人_b788

一、around回调

在rails中除了before回调和after回调,还有一种around回调
比如around_save、around_update、around_destroy

二、around回调何时触发

around回调在before和after之间触发,即它可以在方法执行的前后执行。
就是我们可以在around回调中先执行某些代码,然后通过yield执行方法,最后再执行某些代码。
案例:
我们以around_save回调为例,顾名思义,它的意思是在执行save方法时触发。
其一般流程为:

    ....#do somegthing
    yield #将会去执行save方法
    ....#do somegthing

我们在user model中使用around_save回调:

class Group
around_save :test_around_save
    def test_around_save
    puts "in around save"
    yield #将会去执行save方法
    puts "out around save"
end
> g = Group.new(title: "xxx")
> g.save
in around save
Group Create...........#SQL语句
out around save
=> true

执行结果为:



同理如果使用around_update回调,则yield会去执行update方法,如果使用的是around_destroy回调,则yield会去执行destroy方法。

三、参考资料

1.Rails: around_* callbacks

上一篇下一篇

猜你喜欢

热点阅读