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



34
35
36
37
38
39
40
# File 'lib/simple_validate.rb', line 34

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

Instance Method Details

#add_validations(args, klass) ⇒ Object



53
54
55
56
57
58
# File 'lib/simple_validate.rb', line 53

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

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

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
51
# File 'lib/simple_validate.rb', line 42

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

#validate(instance) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/simple_validate.rb', line 64

def validate(instance)
  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



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

def validations
  @validations ||= []
end