ruby-on-rails - Rails 基于位置的搜索不适用于 Heroku

标签 ruby-on-rails heroku geokit

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

@events = Event.all(:origin => [@location.lat, @location.lng], :within => 5, :conditions => ["end_date >= ?", Date.today], :选择=>“id,created_at,user_id,位置,描述,永久链接,标题”,:order =>“created_at DESC”)

上面的语句在我的带有 mysql 数据库的本地系统中运行良好。

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

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

任何帮助将不胜感激。

谢谢, 卡延。

最佳答案

需要注意的是,Heroku 使用 Postgres 作为唯一的 SQL 数据库后端:http://devcenter.heroku.com/articles/database

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

Why does Postgresql fail with Geokit like this?

Rails: Converting from MySQL to PostGres breaks Geokit Distance Calculations?

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

关于ruby-on-rails - Rails 基于位置的搜索不适用于 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5367365/

相关文章:

ruby-on-rails - Rails 3 做 skip_before_filter 的方法,:only

ruby-on-rails - Ruby on Rails,引擎之间的依赖解析

ruby-on-rails - 使用设备未收到确认邮件

javascript - 使用 Casper/Phantom 读取 HTML 属性因环境而异

python - Celery 为每个任务创建一个新连接

ruby-on-rails - geokit-rails 的未定义方法 'merge_conditions'

javascript - 如果没有选中复选框,则禁用按钮 jquery

ruby-on-rails - Rails 与同一模型的多个 Has_one 关系

地质套件 gem :Uninitialized Constant

ruby-on-rails - 为什么 Postgresql 会像这样使用 Geokit 失败?