验证街道地址的唯一性

时间:2013-05-13 00:55:08

标签: ruby-on-rails ruby

这是一个普遍的问题:如果我想验证街道地址的唯一性,并希望确保在“验证”中将“驱动”和“博士”这样的语义等同性视为同一事物,那么将如何/在何处我宣布验证有这样的平等吗?

3 个答案:

答案 0 :(得分:1)

您需要以某种方式规范化这些地址。我推荐谷歌的地理编码器宝石。

答案 1 :(得分:1)

这是一个非常重要的问题。您不会通过关于规范化地址的adhoc规则列表来解决它。如果你想做得好,你应该找到一个USPS认证的Coding Accuracy Support System (CASS) library并用它来规范你的地址。

答案 2 :(得分:0)

您可以在模型中使用validates :address, :uniqueness => true

为了确保语义上的平等,你最好的注意事项是在保存前进行一些清理并将所有“dr”转换为“drive”,将所有2个空格转换为1个空格,以及类似的东西。

但我怀疑你会成功吗!你为什么不只使用邮政编码,邮政编码或其他任何名称?那应该是地址的uniq标识符,那你为什么不用它?