2012-02-17 5 views
0

У меня есть таблица врачей, врачи doctor_id, hospital_id, dept_idсфера с несколькими условиями

Как написать сферу, где я могу сказать: Выбрать все Doctores, которые имеют один и тот же hospital_id же dept_id как ток doctor_id, но не включают в этот текущий doctor_id

ответ

2

Вот оно как объем:

class Doctor < ActiveRecord::Base 
    def self.other_docs_in_dept(doc) 
    Doctor.where(dept_id: doc.dept_id) 
      .where(hospital_id: doc.hospital_id) 
      .where("id != #{doc.id}") 
    end 
end 

... но это может работать лучше для вас, как метод экземпляра:

class Doctor < ActiveRecord::Base 
    def other_docs_in_dept 
    Doctor.where(dept_id: dept_id) 
      .where(hospital_id: hospital_id) 
      .where("id != #{id}") 
    end 
end 
+0

Спасибо! Еще один вопрос. Если у каждого из этих врачей есть профиль в doctor_profiles. Как я могу с нетерпением загружать все профили пользователей. –

+0

Если Doctor 'has_one: profile', то [**' .includes (: profile) '**] (http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations) – Mori

+0

@Mori Что касается класса метод 'self.other_docs_in_dept': метод повысит значение' RuntimeError', если 'doc'' 'nil'. – JJD

Смежные вопросы