У меня есть модель с именем Клиника , которая имеет атрибуты 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)
Но затем мне нужно снова задавать вопросы в каждую клинику, чтобы найти врача, его заболевания и т. Д., А также повторять повторы.
Я пробовал с включениями, но они не работают.
Могу ли я справиться с включениями?или любой другой способ избежать слишком большого количества запросов?