Как геокодировать адреса из нескольких моделей?

Мне нужно геокодировать адрес пользователя в широту и долготу для хранения в базе данных.

Таблица адресов

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
Другие вопросы по тегам