Class: Va::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/va.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Validator

Returns a new instance of Validator.



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/va.rb', line 8

def initialize(args={})
  @attributes ||= self.class.defaults.dup
  args.each do |k, v|
    key = k.to_sym
    if self.class.keys.include?(key)
      @attributes[key] = v
    elsif ! self.class.ignore_unauthorized_attributes?
      raise UnauthorizedAttribute.new(key, self)
    end
  end
  @errors = {}
  @valid = validate
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



5
6
7
# File 'lib/va.rb', line 5

def attributes
  @attributes
end

#errorsObject (readonly)

Returns the value of attribute errors.



6
7
8
# File 'lib/va.rb', line 6

def errors
  @errors
end

Class Method Details

.ignore_unauthorized_attributesObject



40
41
42
# File 'lib/va.rb', line 40

def self.ignore_unauthorized_attributes
  @__ignore_unauthorized_attributes__ = true
end

.ignore_unauthorized_attributes?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/va.rb', line 44

def self.ignore_unauthorized_attributes?
  !! @__ignore_unauthorized_attributes__
end

Instance Method Details

#message(msg = "", *attrs) ⇒ Object



32
33
34
# File 'lib/va.rb', line 32

def message(msg="", *attrs)
  raise __callee__.inspect
end

#valid?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/va.rb', line 36

def valid?
  @valid
end

#validateObject



22
23
24
25
26
27
28
29
30
# File 'lib/va.rb', line 22

def validate
  invalid_validations = self.class.validations.select { |attrs, msg, validation|
    is_invalid = !validation.call(*attrs.map { |attr| self.send(attr)})
    key = attrs.count == 1 ? attrs.first : attrs
    errors[key] = msg || "is invalid" if is_invalid
    is_invalid
  }
  invalid_validations.empty?
end