@@ -26,9 +26,9 @@ class Link < ActiveRecord::Base
2626
2727 validates :title , presence : { message : "Un lien doit obligatoirement avoir un titre" } ,
2828 length : { maximum : 100 , message : "Le titre est trop long" }
29- validates :url , presence : { message : "Un lien doit obligatoirement avoir une adresse" } ,
29+ validates :url , http_url : { protocols : PROTOCOLS , message : "L'adresse n'est pas valide" } ,
30+ presence : { message : "Un lien doit obligatoirement avoir une adresse" } ,
3031 length : { maximum : 255 , message : "L’adresse est trop longue" }
31- validate :authorized_protocol
3232
3333 def url = ( raw )
3434 raw . strip!
@@ -39,17 +39,9 @@ def url=(raw)
3939 uri = URI . parse ( raw )
4040 end
4141 write_attribute :url , uri . to_s
42- end
43-
44- def authorized_protocol
45- if url . blank?
46- errors . add ( :url , "L’adresse est obligatoire" )
47- else
48- uri = URI . parse ( url )
49- return true if PROTOCOLS . include? ( uri . scheme )
50- return true if uri . scheme . nil? && uri . host == MY_DOMAIN
51- errors . add ( :url , "L’adresse d’un lien n’est pas valide" )
52- end
42+ # Let raw value if error when parsed, HttpUrlValidator will manage it
43+ rescue URI ::InvalidURIError
44+ write_attribute :url , raw
5345 end
5446
5547### Behaviour ###
0 commit comments