Геокодирование геокодера Rails с использованием пользовательского формата адреса

Я использую геокодер для получения широты и долготы по адресу

В модели я добавил

class Clinic < ApplicationRecord
    geocoded_by :full_street_address
    after_validation :geocode

    def full_street_address
      [address_line1, city, state, country].compact.join(', ')
    end
end

и клиент предоставил мне такие адреса

{
    "name": "Bahrain Defence Force Royal Medical Services Hospital - Riffa",
    "address_line1": "West Riffa P O Box 28743",
    "country": "Bahrain",
    "state": "Al-Wusta",
    "city": "Riffa"
}

Теперь, когда я создаю клинику, она не возвращает широту и долготу,

Кажется, проблема связана с адресом, а не со следующей строкой

[адрес_строка1, город, штат, страна].compact.join(', ')

Есть ли способ, которым я могу конкретно указать почтовый индекс и т. д., или как обращаться с вышеуказанным адресом?


person Muhammad Faisal Iqbal    schedule 03.03.2019    source источник


Ответы (1)


Предполагая, что вы следовали документации Geocoder и добавили атрибуты longitude и latitude в свою модель, я попробовал ваш код, вам просто нужно добавить after_validation :geocode или использовать метод :geocode в любом обратном вызове, который вы хотите.

ИЗМЕНИТЬ:

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

person Bisher    schedule 03.03.2019
comment
after_validation: геокод уже в модели, я обновил вопрос. идентификатор проблемы с адресом обработки, вы пробовали адрес, который я предоставил? - person Muhammad Faisal Iqbal; 03.03.2019
comment
Да, я использовал те же данные, и он вернул мне координаты, вы пробовали другие адреса? - person Bisher; 03.03.2019
comment
да, я попробовал несколько адресов из Пакистана, и они работают. - person Muhammad Faisal Iqbal; 03.03.2019
comment
вы изменили метод full_street_address или использовали как есть - person Muhammad Faisal Iqbal; 03.03.2019
comment
Я оставил код как есть, просто добавил after_validation, потому что его там не было, у меня была похожая проблема раньше, но она была связана со службой поиска, какую из них вы используете? - person Bisher; 04.03.2019
comment
даже google не может понять состояние Al-Wusta & address_line1, не может понять, как это сработало для вас. - person Muhammad Faisal Iqbal; 04.03.2019