2015-10-03 1 views
1

Я использую 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» и т. д. для долготы.

Я хочу решить эту проблему, а затем подумать, чтобы совместить ее с прибытием. Благодаря!

ответ

0

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

Чтобы сделать это, добавьте следующую строку в вашей модели:

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

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

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

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

geocoded_by: адрес,: широта =>: широта, долгота =>: долгота # ActiveRecord

Более подробную информацию об этом можно найти в разделе Model Configuration геокодера документации.

+0

Я не думал об этом, потому что я использую специальный метод в своей модели, но это так очевидно! Большое спасибо, однако !!!! –