Rails: Has_many through query depending on the through table attribute
ruby-on-rails, ruby-on-rails-3.2
Solution
Patient.includes(:physicians, :appointments).where('physicians.id = ? AND appointments.appointment_date = ?', <id or ids array>, Date.today)
Where Date.today could be changed with anything and the pysician is specified by an id or an array of ids.
You could also do:
physician = Physician.find(id)
patients = physician.patients.includes(:appointments).where('appointments.appointment_date = ?', some_date)
Edit:
In Rails 4 and forward, you need to add `references(:appointments)` to the query in order to use appointments in the where clause.
Problem
Having some problems with a has_many through query. Using the example here: 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 ``` The Appointment table has a column named appointment_date How would I get all the Patients from a Specific Physician that have an appointment on a given date?