2012-02-17 159 views
0

我有醫生的表,醫生們doctor_id,hospital_id,DEPT_ID範圍與多個條件

我怎樣寫一個範圍,我可以說:選擇所有誰具有相同的hospital_id相同的dept_id作爲當前的doctores 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中都有個人資料。我如何通過預先加載檢索所有用戶配置文件。 – 2012-02-17 21:54:56

+0

如果Doctor'has_one:profile'那麼[**'.includes(:profile)'**](http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations) – Mori 2012-02-17 22:54:19

+0

@Mori關於類方法'self.other_docs_in_dept':如果'doc'爲'nil',則該方法會引發'RuntimeError'。 – JJD 2013-09-08 20:30:55