通过关联使用has_many的导轨
问题描述:
这是一个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是在图表表中的列之一]
我在做什么错?帮帮我!
答
试试这个:
@patients = Patient.where(:id => @charts.map(&:patient_id))
的@charts集合不会自动收集它的成员patient_id的。其他两个查询的工作原理是因为您正在处理单个记录,而在上一个查询中,您正在根据第二个查询返回的集合。
答
我想访问一列,你可能需要做这样的事情:
@patients = Patient.where(:id => @charts[:patient_id])
谢谢!这有帮助! – user2284821 2013-05-12 03:04:33