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