module AttrValidator::Validator::ClassMethods
Public Instance Methods
validate(method_name = nil, &block)
click to toggle source
# File lib/attr_validator/validator.rb, line 29 def validate(method_name = nil, &block) self.custom_validations ||= [] if block_given? self.custom_validations << block elsif method_name AttrValidator::ArgsValidator.is_symbol!(method_name, "validate method name") self.custom_validations << method_name else raise ArgumentError, "method name or block should be given for validate" end end
validate_associated(association_name, options)
click to toggle source
# File lib/attr_validator/validator.rb, line 19 def validate_associated(association_name, options) AttrValidator::ArgsValidator.not_nil!(options[:validator], :validator) AttrValidator::ArgsValidator.is_class_or_symbol!(options[:validator], :validator) AttrValidator::ArgsValidator.is_symbol_or_block!(options[:if], :if) if options[:if] AttrValidator::ArgsValidator.is_symbol_or_block!(options[:unless], :unless) if options[:unless] self.associated_validations ||= {} self.associated_validations[association_name] = options end
validates(*args)
click to toggle source
# File lib/attr_validator/validator.rb, line 9 def validates(*args) options = args.pop AttrValidator::ArgsValidator.is_hash!(options, "last argument") self.validations ||= {} args.each do |attr_name| add_validations(attr_name, options) end end
Private Instance Methods
add_validations(attr_name, options)
click to toggle source
# File lib/attr_validator/validator.rb, line 43 def add_validations(attr_name, options) self.validations[attr_name] ||= {} options.each do |validator_name, validation_options| validator = AttrValidator.validators[validator_name] unless validator raise AttrValidator::Errors::MissingValidatorError, "Validator with name '#{validator_name}' doesn't exist" end validator.validate_options(validation_options) self.validations[attr_name][validator] = validation_options end end