Module: VirtualBox::AbstractModel::Validatable

Defined in:
lib/virtualbox/abstract_model/validatable.rb

Overview

Provides validation methods for a class. Unlike ActiveRecord, validations are instance-level rather than class-level.

Instance Method Summary

Instance Method Details

- (Object) add_error(field, error)



10
11
12
13
# File 'lib/virtualbox/abstract_model/validatable.rb', line 10

def add_error(field, error)
  errors[field] ||= []
  errors[field].push(error)
end

- (Object) clear_errors



15
16
17
# File 'lib/virtualbox/abstract_model/validatable.rb', line 15

def clear_errors
  @errors = {}
end

- (Object) errors



6
7
8
# File 'lib/virtualbox/abstract_model/validatable.rb', line 6

def errors
  @errors ||= {}
end

- (Boolean) valid?

Returns:

  • (Boolean)


19
20
21
22
# File 'lib/virtualbox/abstract_model/validatable.rb', line 19

def valid?
  validate
  errors.empty?
end

- (Object) validate

Subclasses should override this method.



25
26
27
# File 'lib/virtualbox/abstract_model/validatable.rb', line 25

def validate
  true
end

- (Object) validates_presence_of(field)



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/virtualbox/abstract_model/validatable.rb', line 29

def validates_presence_of(field)
  if field.is_a?(Array)
    field.map { |v| validates_presence_of(v) }.all? { |v| v == true }
  else
    value = send(field)
    if value.nil? || value == ""
      add_error(field, "must not be blank.")
      return false
    else
      return true
    end
  end
end