Around_* callback

我已经阅读了 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html上的文档,但是不明白 around_*回调是什么时候触发与 before_*after_*相关的。

非常感谢你的帮助。

谢谢。

30896 次浏览

around_*回调调用 之前的动作,然后当您想要调用动作本身时,您将 yield调用它,然后继续执行。这就是为什么它被称为 around

顺序是这样的: beforearoundafter

因此,一个典型的 around_save应该是这样的:

def around_save
#do something...
yield #saves
#do something else...
end

Around _ * 回调是围绕动作调用的,并在 before _ * 和 after _ * 动作内部调用。例如:

class User
def before_save
puts 'before save'
end


def after_save
puts 'after_save'
end


def around_save
puts 'in around save'
yield # User saved
puts 'out around save'
end
end


User.save
before save
in around save
out around save
after_save
=> true