0

Как написать ActiveRecord запрос, чтобы получить число patients, которые разделяют appointment (physician может иметь более одного appointments)Активная запись запроса, чтобы получить количество для вложенных ассоциаций в рельсах

class Hospital < ActiveRecord::Base 
    has_many :appointments 
    has_many :patients 
    has_many :physicians 
end 

class Physician < ActiveRecord::Base 
    has_many :appointments 
    has_many :patients, through: :appointments 
    belongs_to :hospital 
end 

class Appointment < ActiveRecord::Base 
    belongs_to :physician 
    belongs_to :patient 
    belongs_to :hospital 
end 

class Patient < ActiveRecord::Base 
    has_many :appointments 
    has_many :physicians, through: :appointments 
    belongs_to :hospital 
end 

я могу получить это как Patient.first.hospital.appointments. Но на самом деле нужно, чтобы написать чистый запрос ActiveRecord, а также где hospital_id не является нулевым

Благодаря

ответ

1

Из того, что я понимаю, что вы хотите сделать несколько вложенных соединяется с некоторыми условиями. Вот как это делается чисто: -

Patient.joins(:appointments => [:physician,:hospital]).where(patients:{<condition_hash_for_patient>},physicians:{<condition_hash_for_physician>},hospitals:{<condition_hash_for_hospital>}) 
+0

Спасибо Рохан. Как насчет condition_hashes? – Vinay

+0

Какие бы условия вы не надели на них. Например, где (пациенты: {name: 'vinay}, врач: {id: 1}) – rohan

+0

Возможно ли получить 'id not nil' в эти списки условий? – Vinay