module Fend::Plugins::ValidationOptions::ParamMethods
Public Instance Methods
validate(opts = {})
click to toggle source
# File lib/fend/plugins/validation_options.rb, line 90 def validate(opts = {}) return if opts.empty? allow_nil = opts.delete(:allow_nil) allow_blank = opts.delete(:allow_blank) return if (allow_nil == true && value.nil?) || (allow_blank == true && blank?) opts.each do |validator_name, args| method_name = "validate_#{validator_name}" raise Error, "undefined validation method '#{validator_name}'" unless respond_to?(method_name) if NO_ARG_METHODS.include?(validator_name) if !!args == args next unless args validation_method_args = [] else validation_method_args = [args] end elsif args.is_a?(Hash) mandatory_arg_key = MANDATORY_ARG_KEYS[validator_name] unless args.key?(mandatory_arg_key) || args.key?(DEFAULT_ARG_KEY) raise Error, "missing mandatory argument for '#{validator_name}' validator" end mandatory_arg = args.delete(mandatory_arg_key) || args.delete(DEFAULT_ARG_KEY) validation_method_args = [mandatory_arg, args] else validation_method_args = ARRAY_ARG_METHODS.include?(validator_name) ? [args] : args end public_send(method_name, *validation_method_args) end end