Rails基于位置的搜索无法在Heroku上运行

kal*_*als 2 ruby-on-rails heroku geokit

最近我在Heroku上部署了我的应用程序.我正在使用Geokit根据用户的位置搜索事件.

@events = Event.all(:origin => [@ location.lat,@ location.lng],:within => 5,:conditions => ["end_date> =?",Date.today],:select => "id,created_at,user_id,location,description,permalink,title",:order =>"created_at DESC")

上面的语句在我的本地系统中使用mysql数据库工作正常.

但是我在Heroku上执行相同的stmt时遇到错误.请检查我在Heroku上遇到的以下错误.

ActiveRecord :: StatementInvalid(PGError:错误:函数弧度(字符变化)不存在2011-03-20T00:52:23-07:00 app [web.1]:LINE 2:...,COS(0.303256183987648)*COS(1.36963671754269)*COS(RADIANS(fr ... 2011-03-20T00:52:23-07:00 app [web.1]:^ 2011-03-20T00:52:23-07:00 app [web .1]:提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.

任何帮助将不胜感激.

谢谢,Kalyan.

juw*_*ter 6

作为单挑,Heroku使用Postgres作为唯一的SQL数据库后端:http://devcenter.heroku.com/articles/database

因此,您的问题与这两个问答有关:

为什么Postgresql会像Geokit这样失败?

Rails:从MySQL转换为PostGres打破了Geokit距离计算?

在您的情况下,您应该添加数据库迁移并将位置模型中的"lat"和"lng"从"string"(或"text")更改为"float",然后Geokit应该分别与Postgres和Heroku一起正常工作.