如何通过远距离以外的其他方式订购rails geocoder gem的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过远距离以外的其他方式订购rails geocoder gem的结果相关的知识,希望对你有一定的参考价值。
我有这个优秀的宝石https://github.com/alexreisner/geocoder在我的应用程序中正常工作,但我需要略微不同地订购活动记录查询的结果。
例如,使用rails控制台
$> Person.near('London',10)
生成一个长SQL查询(不相关)后跟
ORDER BY distance ASC
这给出了一个很好的有序人员列表,从最近到最远(最远10英里)。现在,如果我这样做
$> Person.near('London',10).order('price_per_hour')
查询附加
ORDER BY distance ASC, price_per_hour
我仍然想要伦敦附近的所有人,但我不希望它按距离排序。似乎无论如何都没有把它拿出来。
我无法在活动记录查询之外进行排序,因为我正在使用分页,因此需要在主查询中进行排序,然后对其进行分页。
答案
你应该尝试reorder
而不是order
:
Person.near('London',10).reorder('price_per_hour')
reorder
删除并替换由范围order
创建的near
语句。
另一答案
我知道为时已晚。现在geocoder
gem提供了删除默认的距离顺序
Person.near('London',10,order: false).order('price_per_hour')
以上是关于如何通过远距离以外的其他方式订购rails geocoder gem的结果的主要内容,如果未能解决你的问题,请参考以下文章
如何从 elasticsearch.net / NEST 获取 geo_point 字段的距离
如何在 Ruby on Rails 中通过关联订购 has_many?