class UriValidator

Validator for uri

Public Instance Methods

validate_each(record, attribute, value) click to toggle source

main validator for uri

# File lib/rails_uri_validator.rb, line 10
def validate_each(record, attribute, value)

  unless value.blank?
    # pre var
    valid = true

    begin
      uri = URI.parse(value)

      # need schemes validation?
      unless options[:schemes].nil?
        if options[:schemes].is_a? Array
          valid = false unless options[:schemes].include? uri.scheme.to_sym
        else
          valid = false unless options[:schemes] == uri.scheme.to_sym
        end
      end

      # custom
      if options[:custom].is_a? Proc
        valid = false unless options[:custom].call(uri)
      end

    rescue
      valid = false
    end

    # ip valid
    record.errors.add(attribute, :invalid) unless valid
  end
end