0

这是一个菜鸟问题 - 我有 3 个我正在尝试访问的关联表。

患者模型具有:

has_many :charts
has_many :providers, :through => :charts

提供者模型具有:

has_many :charts 
has_many :patients, :through => :charts

并且图表模型具有:

belongs_to :patient
belongs_to :provider

我拉出 current_user.id 来设置 @provider 工作正常。

@provider = Provider.where(:user_id => current_user.id).first    

然后我使用该@provider.id 创建我需要的图表哈希,它也可以工作

@charts = Chart.where(:provider_id => @provider.id)

但是当我尝试从@charts 哈希创建患者的哈希时,它会中断....

@patients = Patient.where(:id => @charts.patient_id)

说 'undefined method `patient_id' for #' [patient_id 是图表表中的列之一]

我究竟做错了什么?帮助!

4

2 回答 2

0

我认为要访问一个列,您可能需要执行以下操作:

@patients =  Patient.where(:id => @charts[:patient_id])
于 2013-05-11T23:07:41.267 回答
0

尝试这个:

@patients = Patient.where(:id => @charts.map(&:patient_id))

@charts 集合不会自动收集其成员的患者 ID。其他两个查询有效,因为您正在对单个记录进行操作,而在最后一个查询中,您正在对第二个查询返回的集合进行操作。

于 2013-05-12T00:44:06.373 回答