如何在一个连接表中引用rails的哪个方法?

时间:2013-04-22 17:53:26

标签: ruby ruby-on-rails-3

这是一个菜鸟级问题。

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

我使用了关联“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)

1 个答案:

答案 0 :(得分:2)

Joining tables是您在模型的关联表上指定条件时需要执行的操作。 (请查看specifying conditions上的部分,了解您要执行的操作示例)。

但是,简而言之,您希望加入chart表并指定相应的条件。您的查询应该类似于:

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

这应该返回Patients具有给定chartprovider_id的所有patient_mrn