问题
I know how to use the near
method to get all results within a certain radius, but how do I get all results and order by distance?
I know I could do something like this:
Location.near(my_location, 999999, order: 'distance')
However, I would rather skip the radius check altogether and simply get all results sorted by distance.
回答1:
I have had the same issue, and I ended up adding this scope to my geocoded class:
class A
extend Geocoder::Model::ActiveRecord
reverse_geocoded_by :latitude, :longitude
scope :with_distance_to, ->(point) { select("#{table_name}.*").select("(#{distance_from_sql(point)}) as distance") }
end
This will allow you to do A.with_distance_to(point).order('distance')
来源:https://stackoverflow.com/questions/24793235/geocoder-how-get-all-results-and-order-by-distance