Геокодер ищет поля широты и долготы, но их не существует

Я использую Rails Geocoder Gem, Rails 4.2 и MySqL. Я хочу определить, сколько перемещений совместимо с некоторыми коробками.

Путешествия и ящики имеют следующие поля: departure_address, departure_lat, departure_long и arrival_address, arrival_lat, arrival_long.

Когда я хочу проверить, совместимо ли путешествие с коробкой, я пытаюсь выполнить этот запрос:

Travel.near([Box.last.departure_lat, Box.last.departure_long], 50)

Я знаю, что он рассматривает только departure_address, а не arrival_address, но в любом случае это не работает, потому что Geocoder пытается найти поле «широта» в таблице «путешествия», даже если я назвал его «dep_lat» и так далее для долготы.

Хочу решить эту проблему и потом думаю совместить с заездами. Спасибо!


person Lorenzo Camaione    schedule 03.10.2015    source источник


Ответы (1)


Вам нужно указать GeoCoder, что вы не хотите использовать их имена атрибутов по умолчанию lat и lon.

Для этого добавьте в модель следующую строку:

geocoded_by :departure_address, :latitude  => :departure_lat, :longitude => :departure_lon # ActiveRecord

Вы бы сделали то же самое для своих прибывающих, но, конечно, изменили бы имена.

Из документов:

Вы не привязаны к использованию имен столбцов базы данных широты и долготы (с ActiveRecord). Например:

geocoded_by :address, :latitude => :lat, :longitude => :lon # ActiveRecord

Дополнительную информацию об этом можно найти в разделе Конфигурация модели документации GeoCoder.

person Wes Foster    schedule 03.10.2015
comment
Я не думал об этом, потому что я использую специальный метод в своей модели, но это так очевидно!! Однако большое спасибо!!!! - person Lorenzo Camaione; 03.10.2015