【发布时间】:2021-05-13 11:49:50
【问题描述】:
在我们的应用程序中,我们最初有带有纬度/经度的用户记录,并且效果很好。随着我们变得越来越大并且使用它的人越来越多,位置更新/检查的数量变得越来越大,我认为我们可以通过将位置与用户记录分离来减轻负载:可以独立于用户记录更新和检查位置,而无需我们每 X 秒更新一次位置,就清除用户数据上的序列化程序缓存...
然而,这导致了一个有趣的问题:当我们试图在某个位置附近找到用户时,我们现在有点搞砸了。当纬度/经度与用户耦合时,您可以简单地执行User.near(@geocoded_record) 并获得用户的距离排序列表。随着位置的独立,它变得更加困难,我正在寻找有关如何正确查询的建议。
我尝试了User.some_scopes.joins(:location).merge(Location.near(@geocoded_record)),但它返回了一个带有“用户记录”的ActiveRecord_Relation,其中仅包含一个 nil id、纬度和经度……当对位置应用任何其他类型的范围/查询时,不会发生这种情况出于某种原因合并。
所以...有人对通过关联获取按距离排序的用户记录到地理编码记录的最佳方法有什么建议,而无需返回直接在用户上获得纬度/经度?
【问题讨论】:
标签: ruby-on-rails postgresql activerecord rails-geocoder