通过与Geocoder的关联按距离排序

时间:2014-08-12 20:57:34

标签: ruby-on-rails activerecord geocoding rails-geocoder

我在Location模型中的项目中使用了Geocoder gem,其中有一个Venue我希望搜索指定纬度和经度附近的场地并按他们的顺序排序位置距离。现在我像这样搜索:

location_ids = Location.near([lat, lng], 1, units: :km).map(&:id)
venues = Venue.where("location_id IN (?)", location_ids)

我知道我可以做.map(&:venue)这会直接给我场地但在此之后我在我的控制器中链接一个查询,这样做会产生Array而不是ActiveRecord::Relation我可以继续链接查询。

如何按位置距离订购我的场地?

1 个答案:

答案 0 :(得分:0)

好的我认为这可以满足您的需求 - 无法直接尝试使用地理编码器,请告诉我们:

locs = Location.near([lat, lng], 1, units: :km)
venues = Venue.joins(:location).merge(locs)