class ActiveModel::Validations::UrlValidator

Public Instance Methods

url?(url) click to toggle source
# File lib/validators/validates_url_format_of.rb, line 19
def url?(url)
  uri = URI(url)
  regex = if options[:tld]
            Validators::URL_FORMAT_WITHOUT_TLD_VALIDATION
          else
            Validators::URL_FORMAT
          end

  uri.is_a?(URI::HTTP) &&
    url.match(regex) &&
    valid_tld?(uri.host)
rescue URI::InvalidURIError
  false
end
valid_tld?(host) click to toggle source
# File lib/validators/validates_url_format_of.rb, line 34
def valid_tld?(host)
  return true unless options[:tld]

  Validators::TLD.host_with_valid_tld?(host)
end
validate_each(record, attribute, value) click to toggle source
# File lib/validators/validates_url_format_of.rb, line 6
def validate_each(record, attribute, value)
  return if value.blank? && options[:allow_blank]
  return if value.nil? && options[:allow_nil]
  return if url?(value.to_s)

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