如何使用Rails验证美国邮政编码?
我写了这样的东西,但它不起作用:@H_502_3@
validates_format_of :zip_code,:with => /^\d{5}(-\d{4})?$/,:message => "Zip code should be valid"
解决方法
您还可以验证它实际上是一个有效的zip(不只是格式,但zip本身)使用:
http://www.webservicex.net/uszip.asmx?op=GetInfoByZIP
http://www.webservicex.net/uszip.asmx?op=GetInfoByZIP
尝试一个你知道的有效的zip. 02135对比一个无效的一个像09990看到的区别.@H_502_3@
我会考虑结合:@H_502_3@
validates_format_of :zip,:message => "should be in the form 12345 or 12345-1234"
它使用validate_format_of完成,而不是validate_format_of_zip_code,因为这意味着它也可以用于也适合固定,已知的格式的电话号码等(.e.g.美国).
也许先验证格式,并给出错误,如果无效,那么在标准的flash消息中处理所有这些.
然后,如果有效的话,调用该服务器来验证实际的zip本身.@H_502_3@
伟大的服务器提供的这样验证的唯一缺点是它们增加了对其他站点和服务的依赖.所以如果其他站点/服务更改或不可用等等有一个问题.这是为什么首先做更简单的有效性检查是一个好主意的另一个原因.@H_502_3@
完整的服务解决方案还将检查邮政编码服务是否超时,如果发生这种情况,则说5秒,格式确定可能最好接受价值.也许设置’unverified_zip’标志,如果可能的话!@H_502_3@