class ActiveConformity::ObjectValidator
Attributes
conformity_set[RW]
conforms[RW]
errors[RW]
obj[RW]
validator[RW]
validator_klass[RW]
Public Class Methods
new(obj, conformity_set)
click to toggle source
# File lib/active_conformity/object_validator.rb, line 40 def initialize(obj, conformity_set) @obj = obj @conformity_set = ::HashWithIndifferentAccess.new(conformity_set) @errors = {} create_validator_klass end
Public Instance Methods
conforms?()
click to toggle source
# File lib/active_conformity/object_validator.rb, line 47 def conforms? @conforms = true if @conformity_set.blank? check_conformity remove_dynamic_validator @conforms end
Private Instance Methods
call_validation_method(attr, rule)
click to toggle source
# File lib/active_conformity/object_validator.rb, line 80 def call_validation_method(attr, rule) if attr.to_sym == :method if rule.is_a?(String) rule_name = rule.to_sym elsif rule.is_a?(Hash) rule_name = rule[:name].to_sym set_custom_method_arguments(rule[:arguments]) end @validator_klass.validate rule_name else @validator_klass.validates attr, reify_rule(rule) end end
check_conformity()
click to toggle source
# File lib/active_conformity/object_validator.rb, line 71 def check_conformity @validator = @validator_klass.new(@obj) @conformity_set.each do |attr,rule| call_validation_method(attr, rule) end @conforms = @validator.valid? @errors = @validator.errors end
create_validator_klass()
click to toggle source
# File lib/active_conformity/object_validator.rb, line 66 def create_validator_klass validator_klass_name = (0...50).map { ('A'..'Z').to_a[rand(26)] }.join @validator_klass = Object.const_set(validator_klass_name, Class.new(DynamicValidator)) end
remove_dynamic_validator()
click to toggle source
# File lib/active_conformity/object_validator.rb, line 62 def remove_dynamic_validator Object.send(:remove_const, @validator_klass.name.to_sym) end
set_custom_method_arguments(args_hash)
click to toggle source
# File lib/active_conformity/object_validator.rb, line 95 def set_custom_method_arguments(args_hash) args_hash.each{ |k,v| @validator.method_args[k] = v } end