Hi all
I’m having some basic newbie problem with catching an exception.
The following code does not seem to catch the URI::InvalidURIError,
because the line record.errors.add… is never executed.
def validates_url_form_of(*attr_names)
attr_name = attr_names.first.to_s
validates_each(attr_name) do |record, attr_name, value|
uri = URI.parse(record.send(attr_name.to_sym))
if uri.class != URI::HTTP
record.errors.add(attr_name, 'Only HTTP protocol addresses can
be used’)
end
end
rescue URI::InvalidURIError
errors.add(attr_name, ‘The format of the url is not valid.’)
end
I tried it the following way:
def validates_url_form_of(*attr_names)
attr_name = attr_names.first.to_s
validates_each(attr_name) do |record, attr_name, value|
uri = URI.parse(record.send(attr_name.to_sym))
if uri.class != URI::HTTP
record.errors.add(attr_name, 'Only HTTP protocol addresses can
be used’)
end
rescue URI::InvalidURIError
errors.add(attr_name, ‘The format of the url is not valid.’)
end
end
end
But this gives me a syntax error.
What am I missing?
Thanks a lot.
Josh