def define_model_callbacks(*callbacks)
      options = callbacks.extract_options!
      options = {
        skip_after_callbacks_if_terminated: true,
        scope: [:kind, :name],
        only: [:before, :around, :after]
      }.merge!(options)

      types = Array(options.delete(:only))

      callbacks.each do |callback|
        define_callbacks(callback, options)

        types.each do |type|
          send("_define_#{type}_model_callback", self, callback)
        end
      end
    end
def define_model_callbacks(*callbacks)
      options = callbacks.extract_options!
      options = {
        skip_after_callbacks_if_terminated: true,
        scope: [:kind, :name],
        only: [:before, :around, :after]
      }.merge!(options)

      types = Array(options.delete(:only))

      callbacks.each do |callback|
        define_callbacks(callback, options)

        types.each do |type|
          send("_define_#{type}_model_callback", self, callback)
        end
      end
    end
define_model_callbacks accepts the same options +define_callbacks+ does,
 in case you want to overwrite a default. Besides that, it also accepts an
 <tt>:only</tt> option, where you can choose if you want all types (before,
 around or after) or just some.

   define_model_callbacks :initializer, only: :after

 Note, the <tt>only: <type></tt> hash will apply to all callbacks defined
 on that method call. To get around this you can call the define_model_callbacks
 method as many times as you need.

   define_model_callbacks :create,  only: :after
   define_model_callbacks :update,  only: :before
   define_model_callbacks :destroy, only: :around

 Would create +after_create+, +before_update+ and +around_destroy+ methods
 only.

 You can pass in a class to before_<type>, after_<type> and around_<type>,
 in which case the callback will call that class's <action>_<type> method
 passing the object that the callback is being called on.

   class MyModel
     extend ActiveModel::Callbacks
     define_model_callbacks :create

     before_create AnotherClass
   end

   class AnotherClass
     def self.before_create( obj )
       # obj is the MyModel instance that the callback is being called on
     end
   end

 NOTE: +method_name+ passed to define_model_callbacks must not end with
 <tt>!</tt>, <tt>?</tt> or <tt>=</tt>.