Class: DataMapper::Matchers::ValidateLengthOf

Inherits:
ValidationMatcher show all
Defined in:
lib/dm/matchers/validate_length_of.rb

Instance Method Summary collapse

Methods inherited from ValidationMatcher

#description, #failure_message, #initialize, #negative_failure_message, set_default_msg_reg, set_validation_subject, #with_message

Constructor Details

This class inherits a constructor from DataMapper::Matchers::ValidationMatcher

Instance Method Details

#equals(equals) ⇒ Object



46
47
48
# File 'lib/dm/matchers/validate_length_of.rb', line 46

def equals(equals)
  is(equals)
end

#in(range) ⇒ Object



37
38
39
# File 'lib/dm/matchers/validate_length_of.rb', line 37

def in(range)
  within(range)
end

#is(is) ⇒ Object



41
42
43
44
# File 'lib/dm/matchers/validate_length_of.rb', line 41

def is(is)
  @is = is
  self
end

#length(maximum) ⇒ Object



19
20
21
# File 'lib/dm/matchers/validate_length_of.rb', line 19

def length(maximum)
  maximum(maximum)
end

#matches?(model) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/dm/matchers/validate_length_of.rb', line 50

def matches?(model)
  model_class = model.is_a?(Class) ? model : model.class
  validators = model_class.validators.contexts[:default]
          
  validators = validators.select do |validator|
    validator.is_a? DataMapper::Validations::LengthValidator and validator.field_name == @property
  end
  validator = validators.last
  
  return false unless validator
  
  if @maximum
    return validator.options[:maximum] == @maximum
  elsif @minimum
    return validator.options[:minimum] == @minimum
  elsif @within
    return validator.options[:within] == @within
  elsif @is
    return validator.options[:is] == @is
  else
    return false
  end
end

#max(maximum) ⇒ Object



15
16
17
# File 'lib/dm/matchers/validate_length_of.rb', line 15

def max(maximum)
  maximum(maximum)
end

#maximum(maximum) ⇒ Object



10
11
12
13
# File 'lib/dm/matchers/validate_length_of.rb', line 10

def maximum(maximum)
  @maximum = maximum
  self
end

#min(minimum) ⇒ Object



28
29
30
# File 'lib/dm/matchers/validate_length_of.rb', line 28

def min(minimum)
  minimum(minimum)
end

#minimum(minimum) ⇒ Object



23
24
25
26
# File 'lib/dm/matchers/validate_length_of.rb', line 23

def minimum(minimum)
  @minimum = minimum
  self
end

#within(range) ⇒ Object



32
33
34
35
# File 'lib/dm/matchers/validate_length_of.rb', line 32

def within(range)
  @within = range
  self
end