术-机制: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方法。