Rails - 为餐馆存储“服务范围”,允许用户搜索服务其邮政编码的餐馆

时间:2013-08-14 00:25:29

标签: ruby-on-rails ruby geocoding

我正在寻找一种方法,使用Rails来搜索餐厅的送货范围。

例如,我有一个餐厅模型,可以存储愿意旅行的位置和里程。

网站的访问者在搜索字段中提供他们的邮政编码,如果他们的邮政编码在餐馆的交付范围内,则该餐馆将作为搜索结果返回。

我目前正在使用地理编码器宝石,它似乎没有办法在给定点周围保存范围或半径。我可以搜索距离我搜索位置5英里范围内的餐馆,"但不适用于其送货范围包括我访客的搜索字词的餐馆。"

我是一个n00b,所以任何涉及SQL /其他语言的东西都可能不可行。我希望有一些逻辑黑客...就像在我的每家餐馆周围循环一样,看看.nearby结果是否包含我访问者的搜索邮政编码。

此外,如果之前有人问过,请道歉。我没有看到Ruby on Rails特有的任何内容。

1 个答案:

答案 0 :(得分:0)

如果您完全不使用zip_codes,您可以使用距离表来映射两个给定邮政编码之间的距离。它就像一张多对多的桌子。 ID可以是邮政编码,您可以使用类似的方法。

def distance_to(zip_code)
  # Find row where two zip_codes are defined and the saved distance
end

但我不知道这是否是你想要保留在数据中的东西。由于一些原因,一个原因是某个人居住的邮政编码区域不同,因此距离不一致。最后,你可以使用很多东西来做到这一点。

然后,您可能需要考虑查看地图API。谷歌,必应,OpenStreetMaps或其他具有体面api的地图服务,只需放入坐标和返回的距离即可确定您的用户是否在范围内。

通过这种方式处理边缘情况,您不再需要担心存储该数据。如果需要,它还可以让您获得更高的精确度。