У меня есть массив мест (коллекция ActiveRecord), который я сортирую:
@places = Place.all
if params.key? "sort"
if params["sort"] == "best_speed"
@places = @places.joins(:speed_tests).group("places.id").order('avg(speed_tests.download) DESC')
elsif params["sort"] == "more_speed_tests"
@places = @places.joins(:speed_tests).group("places.id").order('count(speed_tests.download) DESC')
else
# other scenario
end
end
Этот код работает отлично.Если я использую метод рядом с геокодером, моя сортировка больше не работает:
if params.key? "address"
results = Geocoder.search(params[:address])
coords = results.first.coordinates
@places = Place.near(coords, radius)
else
@places = Place.all
end
if params.key? "sort"
if params["sort"] == "best_speed"
@places = @places.joins(:speed_tests).group("places.id").order('avg(speed_tests.download) DESC')
elsif params["sort"] == "more_speed_tests"
@places = @places.joins(:speed_tests).group("places.id").order('count(speed_tests.download) DESC')
else
# other scenario
end
end
Я потерялся, потому что не могу отладить, он просто игнорирует сортировку, у меня те же места, отсортированные какони были.Я понял, что проблема в методе .near, потому что, если я применил свой запрос сортировки к Place.all
, он работает, а если я применил его к Place.near
, он не работает.
Любая подсказка, чтопроисходит?
Заранее спасибо