当我使用near搜索某个地方附近的修理厂时,我在group and count中遇到了一个突然错误。我正在使用geocoder gem对创建时的修理厂进行地理编码。
假设我将查询称为:
Repairshop.where(:approved => true).group(:title).count
我得到了正确的哈希结果:{“我的标题”=
现在,当我调用城市或州的组,然后计算结果时,我得到一个Mysql2错误:
让我分步骤展示:
Repairshop.where
给出了与my title repairshop的活动记录关系,它在查找近查询时工作良好。
现在,当我试图依赖它时,就像:
Repairshop.where(:核准=
我得到以下错误显示如下:
MySQL2::Error:您有一个错误,在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确语法使用附近'*,3958.755864232 * 2*ASIN(SQRT(POWER(SIN((43.0481221-<--plhd--1*,3958.755864232 * 2*ASIN(SQRT(POWER(SIN((43.0481221-repairshops.latitude)*PI()/180 / 2), 2)COS(43.0481221*PI()/180)*COS(repairshops.latitude*PI()/180)*POWER(SIN((-76.14742439999999-repairshops.longitude)*PI()/180 / 2), 2)))AS距离,MOD(CAST((ATAN2((repairshops.longitude- -76.14742439999999) / 57.2957795), (( repairshops.latitude- 43.0481221) / 57.2957795)) * 57.2957795) 360AS十进制),360)AS轴承)AScount_repairshops_all_3958_755864232_all_2_all_asin_sqrt_power_sin_43_0481221_repairshops_latitude_all_pi_180_2_2_cos_43_0481221_all_pi_180_all_cos_repairshops_latitude_all_pi_180_all_power_sin_76_14742439999999_repairshops_longitude_all_pi_180_2_2_as_dis,市AS市从
修理厂
WHERE修理厂
。(repairshops.latitude40.153486437783044和45.94275776221696和repairshops.longitude-80.10844293387429和-72.1864058661257和(3958.755864232*2*ASIN(SQRT(POWER(SIN((43.0481221-repairshops.latitude)*PI()/180/2),2)COS(43.0481221*PI()/180)*COS(repairshops.latitude*PI()/180)*POWER(SIN((-76.14742439999999-repairshops.longitude)*PI()/180/2),2))))0.0和200之间)GROUP BY修理厂
.城市
ORDER BY距离ASC
Repairshop模型类如下所示,我已经安装了geocoder gem:
class Repairshop < ActiveRecord::Base
geocoded_by :full_address
after_validation :geocode
end
在SQLite中,一切都运行完美,但在这里,当链接时,它会给出一个错误。我没有直接使用MySQL语法,所以不明白问题在哪里。
注意:我正确地安装了MySQL2,并使用了本地服务器进行开发。组(:字段)。对于与位置无关的其他字段,计数可以正常工作
会非常感谢你的帮助。
共2个答案
匿名用户
Geocoder
gem似乎正在以与#group
不兼容的方式重写select子句。使用子选择可能是一种解决方案:
Repairshop.where(
id: Repairshop.where(
:approved => true
).near(
'syracuse', 200
).select(:id)
).group(
:city
).count
匿名用户
工作解决方案是使用:
修理厂。其中(id:repairshop.near(参数[:位置],参数[:半径])。映射{i | i.id})
而不是修理厂。靠近(参数[:位置]、参数[:半径])
然后运行组和计数
但如果有人能提出更好的解决方案。我会非常感激的!
相关问题
- 如何迭代Hashmap并与同一Hashmap中的其他键进行组合以比较它们的对象
- 如何防止对数组中类对象的重复引用?
- HashMap如何识别内部数组中的哪些位置包含元素?
- 异步管道是否从服务中定义并从组件变量指向的可观察对象取消订阅?
- 组件中的Angular 2重复订阅
- 应该在ngOnDestroy()中将Angular组件变量设置为null吗?
- Angular2处理非组件类中的订阅
- Angular: in ngOnInit()当我重新加载组件时,我的rxjs Fucntion不会运行
- 在Angular中获取路由参数的有效方法
- 在视图中使用@input可观察,但组件中的管道函数被忽略
- 如何将异步管道过滤成Angular子组件
- Angular 4每次组件加载时重新加载函数
- 组件被销毁和重访后,订阅在ngOnInit函数中运行
- 为什么组件销毁后订阅仍然存在?
- Angular 5将服务注入组件
- RxJS:带直到()角度组件的ngOnDestroy()
- 如何取消订阅角度组件中的多个可观察对象?
- @组件的Angular@取消订阅装饰器
- 是否有等效的异步管道可以在组件中使用?
- 获取API获取415不支持的媒体类型使用POST