Rails,Geocoder - 通过第二组记录获取其他记录和组附近的记录

时间:2016-09-16 22:06:10

标签: ruby-on-rails postgresql activerecord rails-geocoder

我有两个模型,userslocations,彼此之间没有任何关联,它们都有latitudelongitude列。

我需要查询每个users内的所有locations和所有locations,并按users

对它们进行分组

实际上,我需要一组结果,将locations组合在一定半径范围内users

将会有足够的if Ope=="add"or"Add": 来简单地迭代它们是不切实际的,所以我正在寻找SQL或Rails选择它们的方式

我正在使用rails地理编码器(https://github.com/alexreisner/geocoder

1 个答案:

答案 0 :(得分:0)

问题被低估了,但我会发布我最后的答案

我不得不取消地理编码器宝石,因为它没有很好地用弹拨或选择,只需手动使用方程式,最后使用:

User.select("ARRAY_AGG(users.id) as user_list, (SELECT array(SELECT locations.id from locations WHERE (6371.0 * 2 * ASIN(SQRT(POWER(SIN((users.latitude - locations.latitude) * PI() / 180 / 2), 2) + COS(users.latitude * PI() / 180) * COS(locations.latitude * PI() / 180) * POWER(SIN((users.longitude - locations.longitude) * PI() / 180 / 2), 2)))) <= CAST(<whatever radius> AS float))) as location_list").group("location_list")