Sha256: a4fa0d64326d891e464d7ca1fad13b0aa69dd83564875aee62aa0e5a04e6faf3

Contents?: true

Size: 1.44 KB

Versions: 10

Compression:

Stored size: 1.44 KB

Contents

module MongoMapper
  module Callbacks
    def self.included(model)
      model.class_eval do
        include ActiveSupport::Callbacks

        define_callbacks(
          :before_save, :after_save, 
          :before_create, :after_create, 
          :before_update, :after_update, 
          :before_validation, :after_validation, 
          :before_validation_on_create, :after_validation_on_create, 
          :before_validation_on_update, :after_validation_on_update, 
          :before_destroy, :after_destroy
        )
      end
    end

    def valid?
      action = new? ? 'create' : 'update'
      
      run_callbacks(:before_validation)
      run_callbacks("before_validation_on_#{action}".to_sym)
      result = super
      run_callbacks("after_validation_on_#{action}".to_sym)
      run_callbacks(:after_validation)
      
      result
    end

    def destroy
      run_callbacks(:before_destroy)
      result = super
      run_callbacks(:after_destroy)
      result
    end

    private
      def create_or_update(*args)
        run_callbacks(:before_save)
        if result = super
          run_callbacks(:after_save)
        end
        result
      end

      def create(*args)
        run_callbacks(:before_create)
        result = super
        run_callbacks(:after_create)
        result
      end

      def update(*args)
        run_callbacks(:before_update)
        result = super
        run_callbacks(:after_update)
        result
      end
  end
end

Version data entries

10 entries across 10 versions & 4 rubygems

Version Path
mrkurt-mongo_mapper-0.6.11 lib/mongo_mapper/callbacks.rb
mongo_mapper-unstable-2010.1.6 lib/mongo_mapper/callbacks.rb
mongo_mapper-unstable-2010.1.5 lib/mongo_mapper/callbacks.rb
mongo_mapper-unstable-2010.1.4 lib/mongo_mapper/callbacks.rb
tpitale-mongo_mapper-0.6.10 lib/mongo_mapper/callbacks.rb
mrkurt-mongo_mapper-0.6.10 lib/mongo_mapper/callbacks.rb
mongo_mapper-0.6.10 lib/mongo_mapper/callbacks.rb
mrkurt-mongo_mapper-0.6.9 lib/mongo_mapper/callbacks.rb
mongo_mapper-0.6.9 lib/mongo_mapper/callbacks.rb
mrkurt-mongo_mapper-0.6.8 lib/mongo_mapper/callbacks.rb