Rails геокодер с включает - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть модель с именем Клиника , которая имеет атрибуты lat и long и использует 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

Чем существует режим с именем Врач , который имеет_мани клиники связь со степенью и болезнью

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)

Но затем мне нужно снова задавать вопросы в каждую клинику, чтобы найти врача, его заболевания и т. Д., А также повторять повторы.

Я пробовал с включениями, но они не работают.

Могу ли я справиться с включениями?или любой другой способ избежать слишком большого количества запросов?

...