Sha256: 2139ecb634595cabb634a1abe23d7680b298162ef703f7d48047beabcef16c5e

Contents?: true

Size: 1.61 KB

Versions: 12

Compression:

Stored size: 1.61 KB

Contents

module MongoMapper
  module Validations    
    module Macros
      def validates_uniqueness_of(*args)
        add_validations(args, MongoMapper::Validations::ValidatesUniquenessOf)
      end

      def validates_exclusion_of(*args)
        add_validations(args, MongoMapper::Validations::ValidatesExclusionOf)
      end

      def validates_inclusion_of(*args)
        add_validations(args, MongoMapper::Validations::ValidatesInclusionOf)
      end
    end
    
    class ValidatesUniquenessOf < Validatable::ValidationBase
      def valid?(instance)
        # TODO: scope
        doc = instance.class.find(:first, :conditions => {self.attribute => instance[attribute]}, :limit => 1)
        doc.nil? || instance.id == doc.id
      end

      def message(instance)
        super || "has already been taken"
      end
    end
    
    class ValidatesExclusionOf < Validatable::ValidationBase
      required_option :within
      
      def valid?(instance)
        value = instance[attribute]
        return true if allow_nil && value.nil?
        return true if allow_blank && value.blank?
        
        !within.include?(instance[attribute])
      end
      
      def message(instance)
        super || "is reserved"
      end
    end

    class ValidatesInclusionOf < Validatable::ValidationBase
      required_option :within
      
      def valid?(instance)
        value = instance[attribute]
        return true if allow_nil && value.nil?
        return true if allow_blank && value.blank?
        
        within.include?(value)
      end
      
      def message(instance)
        super || "is not in the list"
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hashrocket-mongomapper-0.3.10 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.11 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.12 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.13 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.14 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.3 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.4.1 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.4 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.5 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.6 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.7 lib/mongomapper/validations.rb
hashrocket-mongomapper-0.3.8 lib/mongomapper/validations.rb