Rails-запрос имеет связь с Geocoder - PullRequest
0 голосов
/ 28 января 2019

Я использую гем Geocoder для получения геокода Locations, из которых принадлежит Event.Event has_many Locations.

Мне нужно вернуть запрос всех событий, которые .near (метод геокодера) и params[:zipcode].

Первая строка ниже возвращает правильную коллекцию @locations, но я не знаю, как включить Event s, которые имеют эти Locations, так как они являются массивом Locations.

@locations = Location.near("#{params[:zipcode]}", params[:within])
@events = Events.joins(:locations).where(location: {any of the @locations})

Я чувствую, что это довольно просто ... но у меня пробел!

Возможно ли сделать эту одну строку?Что-то вроде:

@events = Events.joins(:locations).where(location: address.near("#{params...})

Таблица Location имеет :address :latitude :longitude в БД (геокодировано: адрес).

Модель местоположения:

class Location < ApplicationRecord
  belongs_to :event
  geocoded_by :address
  after_validation :geocode
end

Событиемодель:

class Event < ApplicationRecord

  belongs_to :user
  has_many :locations, dependent: :delete_all
  accepts_nested_attributes_for :locations, reject_if: :all_blank, allow_destroy: true

end

1 Ответ

0 голосов
/ 28 января 2019

, пожалуйста, напишите ниже код в модели события

reverse_geocoded_by 'locations.latitude', 'locations.longitude'

или

geocoded_by       'locations.address'

После написания этого кода вы можете непосредственно нажать возле запроса модели события, например

Event.near("#{params[:zipcode]}", params[:within])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...