Ruby On Rails - Geocoder - 接近条件

时间:2013-02-24 20:33:51

标签: ruby-on-rails postgresql activerecord geolocation rails-geocoder

我在我的应用程序中使用GeoCoder。现在我需要在数据库中搜索接近某个位置或具有特定属性集的对象。我想在一个数据库查询中执行此操作,因为数据库非常庞大。

我想要像

这样的东西
  Spot.near([lat,long],distance).where("visited = ?",true). 

距离和被访问属性应与OR结合使用,而不是与AND结合使用。

有没有人知道如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:4)

根据this回答,您应该可以执行以下操作:

near = Spot.near([lat, long], distance)
visited = Spot.where(visited: true)

near = near.where_values.reduce(:and)
visited = visited.where_values.reduce(:and)

Spot.where(near.or(visited))