class PoroValidator::Validators::LengthValidator
Public Instance Methods
validate(attribute, value, options)
click to toggle source
# File lib/poro_validator/validators/length_validator.rb, line 4 def validate(attribute, value, options) return if value.nil? message = options.fetch(:message, :length) options.keys.each do |key| matcher = matchers(key) next if matcher.nil? v = value.is_a?(::String) ? value : value.to_s unless matchers(key).call(v, options[key]) errors.add(attribute, message, key => options[key]) end end end
Private Instance Methods
matchers(key)
click to toggle source
# File lib/poro_validator/validators/length_validator.rb, line 21 def matchers(key) m = { extremum: lambda do |value, length| value.length == length end, max: lambda do |value, length| value.length <= length end, min: lambda do |value, length| value.length >= length end, in: lambda do |value, length| length.cover?(value.length) end } m.fetch(key, nil) end