2013-03-26 16 views
7

arası Sor_many ile bazı sorunlar sorun yaşamadan. Atama tablo sütun appointment_date ben belirli bir tarihte randevu sahip Belirli Bir Hekim tüm Hastaları alacağı NasılRails has_many içinden tablo özniteliğine bağlı olarak

seçti http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

class Physician < ActiveRecord::Base 
    has_many :appointments 
    has_many :patients, :through => :appointments 
end 

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

class Patient < ActiveRecord::Base 
    has_many :appointments 
    has_many :physicians, :through => :appointments 
end 

: Burada örneği kullanarak

? Date.today şey ve pysician ile değiştirilebilir

cevap

13
Patient.includes(:physicians, :appointments).where('physicians.id = ? AND appointments.appointment_date = ?', <id or ids array>, Date.today) 

id veya kimlikleri dizisi belirtilir.

Ayrıca yapabilirdi:

physician = Physician.find(id) 
patients = physician.patients.includes(:appointments).where('appointments.appointment_date = ?', some_date) 

Düzenleme:

yılında Raylar 4 ve ileri nereye fıkrada randevuları kullanmak için sorguya references(:appointments) eklemeniz gerekir.

+1

Harika! Çok teşekkürler. – Ghar

+1

bu raylar 4 benim için işe yaramadı, ben oldukça uzun bir zaman harcadı ve bu çözüm bulundu (http://stackoverflow.com/questions/18799934/has-many-through-how-do-you -access-join-table-attributes) raylar için 4: –

+1

Yup, raylarda 4, tablo isimlerine referanslar eklemek için 'reference 'kullanmanız gerekir. – spullen

İlgili konular