Sha256: 40a70374a7cf797147fa581c0e74a322c99a1f198d170464342fb1b67d6f0866

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

module DataMapper
  module Validate

    ##
    #
    # @author Guy van den Berg
    # @since  0.9
    class WithinValidator < GenericValidator

      def initialize(field_name, options={})
        super
        @field_name, @options = field_name, options
        @options[:set] = [] unless @options.has_key?(:set)
      end

      def call(target)
        includes = @options[:set].include?(target.send(field_name))
        return true if includes

        s = ''
        @options[:set].each {|item| s = s + "#{item}, "}
        s = '[' + s[0..(s.length-3)] + ']'

        error_message = @options[:message] || "%s must be one of #{s}".t(Extlib::Inflection.humanize(@field_name))
        add_error(target, error_message , @field_name)
        return false
      end
    end # class WithinValidator

    module ValidatesWithin

      # Validate the absence of a field
      #
      def validates_within(*fields)
        opts = opts_from_validator_args(fields)
        add_validator_to_context(opts, fields, DataMapper::Validate::WithinValidator)
      end

    end # module ValidatesWithin
  end # module Validate
end # module DataMapper

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dm-validations-0.9.2 lib/dm-validations/within_validator.rb
dm-validations-0.9.3 lib/dm-validations/within_validator.rb