ruby-on-rails – Rails has_many通过查询,具体取决于through table属性

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails has_many通过查询,具体取决于through table属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有一些has_many通过查询的问题.

使用此处的示例: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

Appointment表有一个名为appointment_date的列

如何让特定医师的所有患者在指定日期预约?

解决方法

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

Date.today可以用任何东西改变,而pysician由id或一组id指定.

你也可以这样做:

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

编辑:

在Rails 4和转发中,您需要向查询添加引用(:约会)以便在where子句中使用约会.

猜你在找的Ruby相关文章