2013-05-11 117 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])