2013-03-26 2 views
7

Einige Probleme mit einer has_many durch Abfrage.Schienen has_many durch Abfrage abhängig von der durch die Tabelle Attribut

hier das Beispiel verwenden: 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 

Der Termin Tisch appointment_date

eine Spalte mit dem Namen hat Wie würde ich alle Patienten, die von einem bestimmten Arzt erhalten, die zu einem bestimmten Zeitpunkt einen Termin ?

Antwort

13

Wobei Date.today mit irgendetwas geändert werden kann und der Pysician durch eine ID oder ein Array von IDs angegeben wird.

Sie könnten auch tun:

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

Edit:

In Rails 4 und weiterleiten, müssen Sie references(:appointments) auf die Abfrage hinzuzufügen, um Verabredungen zu verwenden, in der where-Klausel.

+1

Großartig! Vielen Dank. – Ghar

+1

Dies funktionierte nicht für mich auf Schienen 4, ich verbrachte ziemlich viel Zeit mit der Suche und fand [diese Lösung] (http://stackoverflow.com/questions/18799934/has-my-through-how-do-you -access-join-table-attributes) für rails 4: –

+1

Yup, in rails 4 müssen Sie 'references' verwenden, um Tabellennamen aus Includes zu referenzieren. – spullen