宝石地址解析器Place.near返回无效集合?

时间:2018-12-01 12:10:14

标签: ruby-on-rails activerecord geocoder

我有一个地方数组(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,则将无法起作用。

有什么线索吗?

预先感谢

0 个答案:

没有答案