Sha256: 8b43274ae1c16e644e7b11c239d758143a8d42a368c5369d0b4f31efdf648890

Contents?: true

Size: 1.69 KB

Versions: 14

Compression:

Stored size: 1.69 KB

Contents

module MongoMapper
  module Plugins
    module Callbacks
      module InstanceMethods
        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
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
mongo_mapper-unstable-2010.1.22 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.21 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.20 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.19 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.7 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.18 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.6 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.5 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.17 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.4 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.2 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.1 lib/mongo_mapper/plugins/callbacks.rb
jmonteiro-mongo_mapper-0.1.0 lib/mongo_mapper/plugins/callbacks.rb
mongo_mapper-unstable-2010.1.12 lib/mongo_mapper/plugins/callbacks.rb