我有一个地方数组(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
,则将无法起作用。
有什么线索吗?
预先感谢