Pegue este código:
class UrlValidator < ActiveModel::EachValidator
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
Salve-o no diretório do aplicativo para que seja carregado automaticamente, por exemplo:
app/validators/url_validator.rb
E use-o em seu modelo assim:
class Something < ActiveRecord::Base
validates :link, url: true
end
Os meus agradecimentos a StackOverflow por me apontar na direção certa.