Sha256: 3fcb28f5326ed696ac7c4db602df7d527590dc99c85f0db2496f6afedb7eed33

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

module Devise
  module Orm
    module DataMapper
      module Compatibility
        extend ActiveSupport::Concern

        module ClassMethods
          # Hooks for confirmable
          def before_create(*args)
            wrap_hook(:before, :create, *args)
          end

          def after_create(*args)
            wrap_hook(:after, :create, *args)
          end

          def before_save(*args)
            wrap_hook(:before, :save, *args)
          end

          def before_validation(*args)
            wrap_hook(:before, :valid?, *args)
          end

          def wrap_hook(action, method, *args)
            options = args.extract_options!

            args.each do |callback|
              callback_method = :"#{callback}_callback_wrap"
              send action, method, callback_method
              class_eval <<-METHOD, __FILE__, __LINE__ + 1
                def #{callback_method}
                  #{callback} if #{options[:if] || true}
                end
              METHOD
            end
          end
        end

        def changed?
          dirty?
        end

        def save(options=nil)
          if options.is_a?(Hash) && options[:validate] == false
            save!
          else
            super()
          end
        end

        def update_attribute(name, value)
          update(name => value)
        end

        def update_attributes(*args)
          update(*args)
        end

        def invalid?
          !valid?
        end

        def email_changed?
          attribute_dirty?(:email)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dm-devise-1.5.0 lib/devise/orm/data_mapper/compatibility.rb
dm-devise-1.5.0.beta lib/devise/orm/data_mapper/compatibility.rb
dm-devise-1.4.0 lib/devise/orm/data_mapper/compatibility.rb