Поиск на основе местоположения Rails не работает на Heroku

Недавно я развернул свое приложение на 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.

Но я получаю сообщение об ошибке при выполнении того же stmt на Heroku. Пожалуйста, проверьте приведенную ниже ошибку, с которой я столкнулся на 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]: ПОДСКАЗКА: Ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явное приведение типов.

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

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


person kals    schedule 20.03.2011    source источник
comment
вы должны принять ответ Джувальтера. это было бы правильно.   -  person E.E.33    schedule 05.07.2012


Ответы (1)


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

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

Почему Postgresql не работает с Geokit таким образом?

Rails: преобразование из MySQL в PostGres нарушает расчеты расстояния Geokit?

В вашем случае вы должны добавить миграцию базы данных и изменить «широту» и «длину» в вашей модели местоположения со «строки» (или «текста») на «плавающую», и тогда Geokit должен нормально работать с Postgres и Heroku соответственно.

person juwalter    schedule 20.03.2011
comment
Привет juwalter, Спасибо за вашу помощь. Теперь он работает отлично. - person kals; 20.03.2011