Ошибка адреса с гемом Rails GeoCoder - PullRequest
0 голосов
/ 19 сентября 2019

Я использую гем GeoCoder для поиска значений lat и long для локаций, и кажется, что он отлично работает в коде rails.Однако, чтобы получить каждое местоположение lat / long будет длинным и многодневным.

Просматривая документы, которые я видел, я могу использовать rake geocode:all CLASS=Location SLEEP=0.25 BATCH=100 для обработки пакетов по 100 штук.

При этом я сталкиваюсь со следующей ошибкой ...

NoMethodError: undefined method `address=' for #<Location:0x00007f9cf3d8daf0>
Did you mean?  address1=
               address2=
               address3=
               address4=
               address
               address4
               address2
               address1
               address3
               address3?
               address2?
               address1?
               address4?

Следуя документации, я настроил адресный метод, как показано в модели Location ниже.

class Location < ApplicationRecord
  geocoded_by :address
    reverse_geocoded_by :latitude, :longitude
    after_validation :geocode, :reverse_geocode

    # searchkick locations: [:location]

    def address
        [name, postcode].compact.join(", ")
    end

    #  def search_data
  #   attributes.merge location: { lat: latitude, lon: longitude }
  # end
end

Я просмотрел StackOverflow и потратил довольно много времени на Google, пытаясь разобраться, что вызываетэтот вопрос, но не могу на всю жизнь заставить его работать.

У кого-нибудь есть какие-нибудь указатели, или можно увидеть, где я иду не так?

Спасибо

1 Ответ

1 голос
/ 19 сентября 2019

Геокодер ожидает, что в вашей модели будет столбец: address с обратным геокодированием.Вы можете изменить значение по умолчанию следующим образом:

reverse_geocoded_by :latitude, :longitude, :address
after_validation :reverse_geocode

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

rails g model model_name address latitude:float longitude:float
...