Class: Adama::Validator::PresenceValidator

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*attributes) ⇒ PresenceValidator

Returns a new instance of PresenceValidator.



67
68
69
70
# File 'lib/adama/validator.rb', line 67

def initialize(*attributes)
  @attributes = attributes.flatten
  @errors = {}
end

Instance Attribute Details

#errorsObject

Returns the value of attribute errors.



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

def errors
  @errors
end

Instance Method Details

#merge_new_attributes(*attributes) ⇒ Object



76
77
78
# File 'lib/adama/validator.rb', line 76

def merge_new_attributes(*attributes)
  @attributes |= attributes
end

#set_instance_variable(instance, key, value) ⇒ Object



94
95
96
97
# File 'lib/adama/validator.rb', line 94

def set_instance_variable(instance, key, value)
  instance.instance_variable_set "@#{key}", value
  instance.class.class_eval { attr_accessor :"#{key}" }
end

#valid?Boolean

Returns:

  • (Boolean)


72
73
74
# File 'lib/adama/validator.rb', line 72

def valid?
  @valid
end

#validate!(instance) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/adama/validator.rb', line 80

def validate!(instance)
  @valid = true
  kwargs = instance.kwargs
  @attributes.each do |attribute|
    present = kwargs.include? attribute
    if present
      set_instance_variable instance, attribute, kwargs[attribute]
    else
      @errors[attribute] = ['attribute missing']
    end
    @valid = present && @valid
  end
end