Rails Местоположение на основе поиска не работает на Heroku - PullRequest
2 голосов
/ 20 марта 2011

Недавно я развернул свое приложение на Heroku.Я использую Geokit для поиска событий в зависимости от местоположения пользователя.

@ events = Event.all (: origin => [@ location.lat, @ location.lng],: Within => 5,:condition => ["end_date> =?", Date.today],: select => "id, selected_at, user_id, местоположение, описание, постоянная ссылка, заголовок",: order => "creation_at DESC")

Вышеупомянутое утверждение отлично работает в моей локальной системе с базой данных mysql.

Но я получаю ошибку при выполнении того же самого stmt на Heroku.Пожалуйста, проверьте приведенную ниже ошибку, с которой я сталкиваюсь в Heroku.

ActiveRecord :: StatementInvalid (PGError: ОШИБКА: функциональные радианы (изменяемые символы) не существует 2011-03-20T00: 52: 23-07: 00 app[web.1]: ЛИНИЯ 2: ..., COS (0.303256183987648) * COS (1.36963671754269) * COS (RADIANS (пн ... 2011-03-20T00: 52: 23-07: 00 приложение [web.1]): ^ 2011-03-20T00: 52: 23-07: 00 app [web.1]: СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам потребуется добавить явные приведения типов.

Любойпомощь будет принята с благодарностью.

Спасибо, Калян.

1 Ответ

6 голосов
/ 20 марта 2011

В качестве хедс-апа Heroku использует Postgres в качестве единственного сервера базы данных SQL: http://devcenter.heroku.com/articles/database

Следовательно, ваша проблема связана с этими двумя вопросами и ответами:

ПочемуСбой Postgresql с Geokit, как это?

Rails: Преобразование из MySQL в PostGres разбивает вычисления расстояний Geokit?

В вашем случае вы должны добавить перенос базы данныхи измените "lat" и "lng" в вашей модели местоположения с "string" (или "text") на "float", и тогда Geokit будет нормально работать с Postgres и Heroku соответственно.

...