Как геокодировать адреса из нескольких моделей?
Мне нужно геокодировать адрес пользователя в широту и долготу для хранения в базе данных.
Таблица адресов
country_id: int
state_id: int
local_address: string
latitude: float
longitude: float
У меня есть отдельный countries and states
столы. Итак, чтобы получить значения lat & long, мне нужно что-то вроде этого:
geocoded_by :address
def address
[local_address, state, country].compact.join(', ')
end
Но проблема в том, что это сделано в модели (класс адресов), и мне нужно получить доступ к другим таблицам: страны и штаты.
Так что не могу найти выход. Любые рабочие предложения приветствуются.
1 ответ
Решение
В вашей модели у вас должна быть связь с таблицами ваших стран и штатов. Я предполагаю, что вы сохраняете идентификатор штата и идентификатор страны
class User < ActiveRecord::Base
belongs_to :state
belongs_to :country
geocoded_by :address
def address
[local_address, state.name, country.name].compact.join(', ')
end
end