@@ -26,9 +26,9 @@ class Link < ActiveRecord::Base
26
26
27
27
validates :title , presence : { message : "Un lien doit obligatoirement avoir un titre" } ,
28
28
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" } ,
30
31
length : { maximum : 255 , message : "L’adresse est trop longue" }
31
- validate :authorized_protocol
32
32
33
33
def url = ( raw )
34
34
raw . strip!
@@ -39,17 +39,9 @@ def url=(raw)
39
39
uri = URI . parse ( raw )
40
40
end
41
41
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
53
45
end
54
46
55
47
### Behaviour ###
0 commit comments