就我而言,我有一个模型产品 has_one 位置
我使用地理编码器 gem 来搜索距离较近的位置。
请求 Location.near([0, 0], 100) 如下所示:
选择位置。*, 6371.0 * 2 * ASIN(SQRT(POWER(SIN((0 - locations.latitude) * PI() / 180 / 2), 2) + COS(0 * PI() / 180) * COS( location.latitude * PI() / 180) * POWER(SIN((1 - locations.longitude) * PI() / 180 / 2), 2) )) 作为距离,CAST(DEGREES(ATAN2( RADIANS(longitude - 1) ), RADIANS(latitude - 0))) + 360 AS 十进制) % 360 AS 方位来自“位置” WHERE (6371.0 * 2 * ASIN(SQRT(POWER(SIN((0 - locations.latitude) * PI() / 180 / 2), 2) + COS(0 * PI() / 180) * COS(locations.latitude * PI() / 180) * POWER(SIN((1 - locations.longitude) * PI() / 180 / 2), 2) )) <= 20) 按距离排序
我想做这样的事情:
Product.where(...).joins(:location).dosomething
我该怎么做?