我使用Mongoid存储一系列地理编码列表。这些列表需要按价格和邻近度进行排序。每个列表的价格是数据库中的字段,而距离是每个用户唯一的动态属性。
class Listing
include Mongoid::Document
field :price
def distance
get_distance(current_user.location,coordinates)
end
end
如何按距离对这些文件进行排序?我试过了@listing.desc(:distance)
但是没有用。
答案 0 :(得分:2)
简短(无益)答案是:你做不到。
Mongoid确实能够query based on 2d co-ordinates,然后你可以更新你的控制器来做这样的事情:
@listings = Listing.near(current_user.location)
我相信我会按照距离的顺序返回您的商家信息。
在旁注中,我注意到您的Listing
模型指的是您的current_user
对象,这有点打破了MVC架构,因为您的模型不应该对当前会话有任何了解。< / p>