Sha256: d29c47e60df88529d4eeb7bfa550f8df14c0fb80bff33e3387a9438d31701ef7

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

module ActiveModel
  module Validations
    class HostnameValidator < EachValidator
      # Rules taken from http://www.zytrax.com/books/dns/apa/names.html
      def validate_each(record, attribute, value)
        return if value.blank? && options[:allow_blank]
        return if value.nil? && options[:allow_nil]
        return if Validators::Hostname.valid?(value.to_s)

        record.errors.add(
          attribute,
          :invalid_hostname,
          message: options[:message],
          value: value
        )
      end
    end

    module ClassMethods
      # Validates whether or not the specified URL is valid.
      #
      #   class User < ActiveRecord::Base
      #     validates_hostname_format_of :site
      #
      #     # Validates against a list of valid TLD.
      #     validates_hostname_format_of :site, tld: true
      #   end
      #
      def validates_hostname_format_of(*attr_names)
        validates_with HostnameValidator, _merge_attributes(attr_names)
      end

      alias_method :validates_hostname, :validates_hostname_format_of
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
validators-2.8.1 lib/validators/validates_hostname_format_of.rb
validators-2.8.0 lib/validators/validates_hostname_format_of.rb
validators-2.7.0 lib/validators/validates_hostname_format_of.rb