0

这是一个菜鸟级别的问题。

我有两个模型:通过表格图表加入的患者和提供者。

我使用了关联“has_many :through”而不是“has_and_belongs_to_many”,因为我需要在图表表中添加另一列 [称为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

我试图在 Patient 模型上调用 where 方法来检索所有具有以下条件的患者:

- 该患者的图表连接表中的 provider_id 等于给定值 [@exam.provider_id] 和

- 该患者的 Chart 连接表中的 patient_mrn 等于给定值 [@exam.patient_mrn]。

这是我想尝试的,但它显然不起作用。我会误入歧途吗?

@patient = Patient.where(:patient.chart[provider_id] => @exam.provider_id,
          :patient.chart[patient_mrn] => @exam.patient_mrn)
4

1 回答 1

2

为了在模型的关联表上指定条件,您需要执行连接表(查看有关指定条件的部分以获取您要执行的操作的示例)。

但是,简而言之,您想加入您的chart表并在其上指定条件。您的查询应该类似于:

@patients = Patient.joins(:charts).where(:charts => { :provider_id => @exam.provider_id, :patient_mrn => @exam.patient_mrn })  

这应该返回所有具有给定andPatients的人。chartprovider_idpatient_mrn

于 2013-04-22T19:21:40.023 回答