È anche possibile convalidare che in realtà è una zip valido (non solo il formato, ma la zip stesso) utilizzando:
http://www.webservicex.net/uszip.asmx?op=GetInfoByZIP
Prova una zip valida si sa, ad esempio, 02135 contro uno non valido come 09990 per vedere la differenza.
vorrei prendere in considerazione che unisce questo con:
validates_format_of :zip, :with => /^\d{5}(-\d{4})?$/, :message => "should be in the form 12345 or 12345-1234"
che è fatto con validate_format_of
, piuttosto che validate_format_of_zip_code
come questo significa che può essere utilizzato anche per i numeri di telefono, ecc che anche montare un, noto, formato fisso (.eg US).
Forse convalidare prima il formato e fornire un errore se non valido, quindi gestirlo tutto in rotaie con un messaggio flash standard.
Quindi, se valido, effettuare la chiamata a quel server per convalidare lo stesso zip vero e proprio.
L'unico lato negativo delle convalide fornite dal server è che aumenta la dipendenza da altri siti e servizi. Quindi se l'altro sito/servizio cambia le cose o non è disponibile, ecc. C'è un problema. Questo è un altro motivo per cui il semplice controllo della validità prima è una grande idea.
Una soluzione di servizio completo dovrebbe anche verificare il timeout tramite il servizio di codice di avviamento postale e se ciò accade, diciamo 5 secondi e il formato è ok probabilmente è meglio accettare il valore. Magari imposta un flag 'unverified_zip' se possibile!
fonte
2011-11-21 13:24:38
Si prega di definire "non funziona". – jdl