2013-05-11 118 views
0

这是一个noob问题 - 我有3个关联表,我正在尝试访问。通过关联使用has_many的导轨

病人模型有:

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) 

说为# '未定义的方法`patient_id'” [patient_id是在图表表中的列之一]

我在做什么错?帮帮我!

回答

0

试试这个:

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

的@charts集合不会自动收集它的成员patient_id的。其他两个查询的工作原理是因为您正在处理单个记录,而在上一个查询中,您正在根据第二个查询返回的集合。

+0

谢谢!这有帮助! – user2284821 2013-05-12 03:04:33

0

我想访问一列,你可能需要做这样的事情:

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