我们怎样才能在ActiveRecord中实现before_save类型的回调?

时间:2011-08-16 06:27:40

标签: ruby-on-rails ruby activerecord

我想了解如何在ActiveRecord中实现Ar回调?我猜这可以通过Ruby钩子方法实现,但是,我不知道如何在ruby中实现它。任何指针或链接都将非常感激。

2 个答案:

答案 0 :(得分:2)

看看AR source foir callbacks。基本上,它使用ActiveModel callbacks使用ActiveSupport callbacks

涉及很多元编程,但它基本上做的是在运行正确的方法之前调用所有before_回调(这就是super的用途)。如果您希望能够像ActiveRecord一样轻松编写回调代码,请使用ActiveSupport。否则,您可以使用以下内容:

def method_with_callback
  if !respond_to?(:before_callback) || before_callback
    //method
    after_callback if respond_to? :after_callback
  end
end

但ActiveSupport方法更模块化,更易于维护。

答案 1 :(得分:1)

我建议您查看ActiveSupport::Callbacks,您只需要这个就可以获得任何方法的回调。

http://api.rubyonrails.org/classes/ActiveSupport/Callbacks.html