Rails查询has_many与Geocoder的关联

时间:2019-01-28 04:23:38

标签: ruby-on-rails postgresql

我正在使用Geocoder宝石来获取地理编码Locations,其中地理编码属于EventEvent has_many Locations

我需要返回所有.near(地理编码器方法)为params[:zipcode]的事件的查询。

下面的第一行返回正确的@location集合,但是我不知道如何包含具有Event的{​​{1}},因为它们是位置数组。

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地理编码)。

位置模型:

:address :latitude :longitude

事件模型:

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

1 个答案:

答案 0 :(得分:0)

请在事件模型中编写以下代码

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

geocoded_by       'locations.address'

编写此代码后,您可以直接点击事件模型附近的查询

Event.near("#{params[:zipcode]}", params[:within])