Class: AddressFormatValidator
- Inherits:
-
ActiveModel::EachValidator
- Object
- ActiveModel::EachValidator
- AddressFormatValidator
- Defined in:
- app/validators/address_format_validator.rb
Overview
Validates that attribute is a valid address.
Instance Method Summary collapse
-
#validate_each(object, attribute, value) ⇒ void
Validates that
attribute
'svalue
onobject
is a valid address.
Instance Method Details
#validate_each(object, attribute, value) ⇒ void
This method returns an undefined value.
Validates that attribute
's value
on object
is a valid address.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/validators/address_format_validator.rb', line 11 def validate_each(object, attribute, value) = lambda{ object.errors.add attribute, "must be a valid (IP or hostname) address" } begin # Checks for valid IP addresses if value.is_a? IPAddr potential_ip = value.dup else potential_ip = IPAddr.new(value) end .call unless potential_ip.ipv4? || potential_ip.ipv6? rescue IPAddr::InvalidAddressError, IPAddr::AddressFamilyError, ArgumentError # IP address resolution failed, checks for valid hostname .call unless (value && value.match?(/\A#{URI::PATTERN::HOSTNAME}\z/)) end end |