class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
scope :physicals, -> { where appointment_type: 'physical' }
end
class Patient < ActiveRecord::Base
has_many :appointments
has_many :physicians, through: :appointments
end
如何在单个查询中使用物理信息访问医生的患者列表?逆向(具有不同类型的不同约会的患者)?我可以用physician.patients_with_physicals = [patient]
之类的东西设置它吗?
答案 0 :(得分:3)
以下内容将允许您在单个查询中获取任何类型的患者:
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, through: :appointments
def patients_with_appointment_of_type type
self.patients.joins(:appointments)
.where(:appointments => {:type => type})
end
end
您希望使用physician.patients_with_physicals = [patient]
的位置如何计划填写我认为需要的其他约会数据(时间等)?
值得注意的是,Rails使用type
列来表示使用单表继承(STI)的模型并可能导致问题,因此我建议使用不同的列名
答案 1 :(得分:0)
我如何获得患者名单,对于医生,以及体检者的名单 单一查询?
使用ActiveRecord Association Extensions:
#app/models/physician.rb
Class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, through: :appointments do
def with(type)
where(appointment_type: type)
end
end
end
#-> @doctor.patients.with("physicals")
#-> Patient #1 etc
你能解释一下你的意思:
具有不同类型的不同预约的患者)?