class IpaddrValidator

Constants

VERSION

Public Class Methods

default_options() click to toggle source
# File lib/ipaddr_validator.rb, line 19
def default_options
  { ipv4: true, ipv6: false, array: false }
end
valid?(value, options = {}) click to toggle source
# File lib/ipaddr_validator.rb, line 5
def valid?(value, options = {})
  options = default_options.merge(options)
  array =
    if options[:array]
      return false unless value.is_a?(Array)
      value
    else
      [value]
    end
  array.all? do |value|
    validate_single_ipaddr(value, options)
  end
end

Private Class Methods

validate_single_ipaddr(value, options) click to toggle source
# File lib/ipaddr_validator.rb, line 25
def validate_single_ipaddr(value, options)
  ip =
    if value.is_a?(IPAddr)
      value
    else
       IPAddr.new(value)
    end
  case
  when options[:ipv4] && ip.ipv4?
    true
  when options[:ipv6] && ip.ipv6?
    true
  else
    false
  end
rescue IPAddr::Error
  false
end

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/ipaddr_validator.rb, line 45
def validate_each(record, attribute, value)
  unless self.class.valid?(value, options)
    record.errors.add(attribute, options[:message] || :invalid_ipaddr)
  end
end