module RocketGate::Validatable

Public Class Methods

included(base) click to toggle source
# File lib/rocketgate/validatable.rb, line 18
def self.included(base)
  base.extend(ClassMethods)
end

Public Instance Methods

invalid_attributes() click to toggle source
# File lib/rocketgate/validatable.rb, line 35
def invalid_attributes
  self.class.validatable_attributes.select {|v| !is_object_valid?(send(v)) }
end
valid?() click to toggle source
# File lib/rocketgate/validatable.rb, line 22
def valid?
  self.class.validatable_attributes.all? {|v| is_object_valid?(send(v)) }
end
validate!() click to toggle source
# File lib/rocketgate/validatable.rb, line 26
def validate!
  if valid?
    self
  else
    message = "Invalid attributes: #{invalid_attributes.join(', ')}"
    raise RocketGate::ValidationError.new(message) unless valid?
  end
end

Private Instance Methods

is_class_validatable?(klazz) click to toggle source
# File lib/rocketgate/validatable.rb, line 41
def is_class_validatable?(klazz)
  klazz.included_modules.include?(RocketGate::Validatable)
end
is_object_valid?(obj) click to toggle source
# File lib/rocketgate/validatable.rb, line 45
def is_object_valid?(obj)
  if is_class_validatable?(obj.class)
    obj.valid?
  else
    !obj.nil?
  end
end