Module: SimpleValidate::ClassMethods

Defined in:
lib/simple_validate.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/simple_validate.rb', line 39

def method_missing(method, *args, &block)
  if respond_to?(method)
    add_validations(args, const_get(Utils.camelize(method)))
  else
    super
  end
end

Instance Method Details

#add_validations(args, klass) ⇒ Object



58
59
60
61
62
63
# File 'lib/simple_validate.rb', line 58

def add_validations(args, klass)
  options = Utils.extract_options! args
  args.each do |attr|
    validations << klass.new(attr, options)
  end
end

#respond_to_missing?(method, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
50
51
52
53
54
55
56
# File 'lib/simple_validate.rb', line 47

def respond_to_missing?(method, include_private = false)
  method.to_s =~ /(validates_
                   (format|
                    presence|
                    type|
                    inclusion|
                    exclusion|
                    length)_of)
  /x || super
end

#validate(instance) ⇒ Object



69
70
71
72
73
74
75
76
77
78
# File 'lib/simple_validate.rb', line 69

def validate(instance)
  instance.errors.clear!

  validations.each do |validation|
    if validation.condition.call && !validation.valid?(instance)
      instance.errors.add(validation.attribute, validation.message)
    end
  end
  instance.errors.empty?
end

#validationsObject



65
66
67
# File 'lib/simple_validate.rb', line 65

def validations
  @validations ||= []
end