存储查询结果排序依据的计算值 Rails

Storing value of calculation that query result is being ordered by with Rails

我是 rails 的新手,但我仍然觉得我应该知道这个问题的答案。绘制一个完整的空白。

我有以下查询returns预期的结果。但是我还想存储它们按 returns.

排序的计算值

提取此值的最佳方法是什么。

这是代码行

@service = Service.order("ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lat lon)', 4326))").limit(10)

正如我所说 returns 正确的结果,但我还想找出每个结果的距离

谢谢

试试这个:

@services = Service.select("*, ST_Distance(services.lon_lat, ST_GeomFromText('POINT (lat lon)', 4326)) as st_distance").order("st_distance").limit(10)

您在 @services 中返回的对象(注意我将其更改为复数以符合约定)应该有一个额外的方法 .st_distance,这就是我设置该函数的结果用 as st_distance

调用