Skip to content

Instantly share code, notes, and snippets.

@hendricius
Created September 22, 2013 11:45
Show Gist options
  • Save hendricius/6659186 to your computer and use it in GitHub Desktop.
Save hendricius/6659186 to your computer and use it in GitHub Desktop.
class UrlValidator < ActiveModel::EachValidator
# Credits to Lee Machin https://coderwall.com/p/ztig5g
# Place this in app/validators/url_validator.rb
def validate_each(record, attribute, value)
record.errors[attribute] << (options[:message] || "must be a valid URL") unless url_valid?(value)
end
# a URL may be technically well-formed but may
# not actually be valid, so this checks for both.
def url_valid?(url)
url = URI.parse(url) rescue false
url.kind_of?(URI::HTTP) || url.kind_of?(URI::HTTPS)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment