Rails地理编码器,包括

时间:2019-02-19 21:09:46

标签: ruby-on-rails join geolocation rails-geocoder

我有一个名为 Clinic 的模型,它的经纬度很长,并且正在使用reverse_geocode

class Clinic < ApplicationRecord
    belongs_to :doctor

    after_validation :reverse_geocode

    reverse_geocoded_by :latitude, :longitude do |obj,results|
      if geo = results.first
        obj.state    = geo.state
        obj.country    = geo.country
      end
    end
end

比有一种名为 Doctor 的模式,它具有许多诊所,并且与疾病程度和疾病有关

class Doctor < ApplicationRecord
    has_many :clinics
    has_many :degrees, dependent: :destroy

    has_many :doctor_diseases, dependent: :destroy
    has_many :diseases, through: :doctor_diseases
end

我使用html5地理位置获取用户的位置,而不是让他选择按他的姓名,他的学位疾病搜索医生内。

然后显示匹配搜索条件的每位医生及其距用户10公里以内的诊所与用户的距离。

喜欢

Name       |    Disease    |    Degree    |    Distance
Dr smith   |    hepatitis  |    MBBS      |     0.5 km
Dr James   |    coronary   |    MRCGP     |     1.2 km

我能够使用类似的连接来实现

@clinics = Clinic.joins(doctor: [:degrees, :diseases]).where("doctors.first_name ILIKE ? OR doctors.last_name ILIKE ? OR degrees.name =? OR diseases.name =? ", "%#{params[:q]}%", "%#{params[:q]}%","%#{params[:q]}%", "%#{params[:q]}%").near([params[:latitude].to_s, params[:longitude].to_s], 10.0, :units => :km)

但是我不得不再次向每个诊所询问以获取医生及其疾病等信息,并且还会重复记录。

我尝试了包含,但是它不起作用。

我可以用include处理吗? 或其他避免过多查询的方式?

0 个答案:

没有答案