这是一个菜鸟级问题。
我有两个模型:患者和提供者通过表格图表加入。
我使用了关联“has_many:through”而不是“has_and_belongs_to_many”,因为我需要将另一列添加到Chart表[称为patient_mrn],我理解我无法使用“has_and_belongs_to_many”场景。
患者模型有:
has_many :charts
has_many :providers, :through => :charts
提供者模型具有:
has_many :charts
has_many :patients, :through => :charts
并且图表模型具有:
belongs_to :patient
belongs_to :provider
我试图在患者模型上调用where方法来检索具有以下条件的所有患者:
- 该患者的图表连接表中的provider_id等于给定值[@ exam.provider_id]和
- 该患者的图表连接表中的patient_mrn等于给定值[@ exam.patient_mrn]。
这是我想出来的尝试,但显然不起作用。我哪里误入歧途?
@patient = Patient.where(:patient.chart[provider_id] => @exam.provider_id,
:patient.chart[patient_mrn] => @exam.patient_mrn)
答案 0 :(得分:2)
Joining tables是您在模型的关联表上指定条件时需要执行的操作。 (请查看specifying conditions上的部分,了解您要执行的操作示例)。
但是,简而言之,您希望加入chart
表并指定相应的条件。您的查询应该类似于:
@patients = Patient.joins(:charts).where(:charts => { :provider_id => @exam.provider_id, :patient_mrn => @exam.patient_mrn })
这应该返回Patients
具有给定chart
和provider_id
的所有patient_mrn
。