Доступ к областям гема геокодера

Руководство по гему указывает Venue.near([40.71, -100.23], 20, :units => :km)

Однако объекты модели этого приложения имеют две переменные геокодированных координат в дополнение к отдельным долготе и широте. Чтобы протестировать различные параметры поиска (postGIS, числовые индексы долготы и широты или вызов сервисов геокодирования), есть ли способ получить доступ к конкретной переменной модели при поиске объектов вблизи заданного местоположения?

Соответствующие данные схемы:

t.decimal  "origin_lon",          precision: 15, scale: 10
t.decimal  "origin_lat",          precision: 15, scale: 10
t.spatial  "origin_lonlat",      limit: {:srid=>3857, :type=>"point"}
add_index "strappos", ["origin_lat"], :name => "index_strappos_on_origin_lat"
add_index "strappos", ["origin_lon"], :name => "index_strappos_on_origin_lon"
add_index "strappos", ["origin_lonlat"], :name => "index_strappos_on_origin_lonlat", :spatial => true

person Jerome    schedule 31.12.2015    source источник
comment
Покажите нам схему/модель объекта, чтобы мы точно знали, как он выглядит.   -  person Wes Foster    schedule 31.12.2015
comment
обновил некоторое время назад..   -  person Jerome    schedule 31.12.2015


Ответы (1)


GeoCoder по умолчанию использует latitude и longitude в качестве имен своих переменных. Поскольку у вас другие, вам нужно добавить дополнительную опцию, чтобы запросить origin_lon и origin_lat.

В вашей модели, где вы инициализируете geocoder для модели, у вас есть возможность назначить другое имя для атрибута lat/lon:

# YourModel.rb
geocoded_by :address,
  latitude: :origin_lat, 
  longitude: :origin_lon

Я разместил его на нескольких строках для ясности. Как видите, я сообщаю geocoder, что мои имена атрибутов широты и долготы отличаются от значений по умолчанию.

Теперь запрос модели с использованием near будет смотреть на эти новые имена атрибутов, а не на значения по умолчанию.

person Wes Foster    schedule 31.12.2015