Flowdock

Active Model Callbacks

Provides an interface for any class to have Active Record like callbacks.

Like the Active Record methods, the callback chain is aborted as soon as one of the methods in the chain returns false.

First, extend ActiveModel::Callbacks from the class you are creating:

  class MyModel
    extend ActiveModel::Callbacks
  end

Then define a list of methods that you want callbacks attached to:

  define_model_callbacks :create, :update

This will provide all three standard callbacks (before, around and after) for both the :create and :update methods. To implement, you need to wrap the methods you want callbacks on in a block so that the callbacks get a chance to fire:

  def create
    _run_create_callbacks do
      # Your create action methods here
    end
  end

The run<method_name>_callbacks methods are dynamically created when you extend the ActiveModel::Callbacks module.

Then in your class, you can use the before_create, after_create and around_create methods, just as you would in an Active Record module.

  before_create :action_before_create

  def action_before_create
    # Your code here
  end

You can choose not to have all three callbacks by passing a hash to the define_model_callbacks method.

  define_model_callbacks :create, :only => :after, :before

Would only create the after_create and before_create callback methods in your class.

Show files where this module is defined (1 file)
Register or log in to add new notes.