Геокодерът търси полета за географска ширина и дължина, но те не съществуват

Използвам 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 се опитва да намери поле „latitude“ в таблицата „travels“, дори ако го нарекох „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