我在我的应用程序中使用GeoCoder。现在我需要在数据库中搜索接近某个位置或具有特定属性集的对象。我想在一个数据库查询中执行此操作,因为数据库非常庞大。
我想要像
这样的东西 Spot.near([lat,long],distance).where("visited = ?",true).
距离和被访问属性应与OR结合使用,而不是与AND结合使用。
有没有人知道如何做到这一点?
谢谢!
答案 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))