2010-08-29 62 views
0

我已經建立了模型關係,一切工作正常,當我使用類似代碼:顯示RoR的關係

@parent.child.each do |item| 
item.name 
end 

但我怎麼會打電話只是一個特定的子給定的有ID

如。

兒童ID是14

想就像一個電話:

@parent.child[childid].name #>>>>>> CHILD'S NAME 

回答

0

@parent.child[14]很可能無法正常工作,child是一個數組,如果它是一個has_many關係,但數組索引不一樣的孩子的身份證。所以你可以做這樣的事情:

@parent.child.find(14).name 

我真的不知道,但如果你做這樣的事情:

@parent = Parent.find(some_id, :include => :child) 
@parent.child.find(some_other_id) # should hit the query cache 
+0

這有效,但有沒有其他方法可以做到這一點,然後再做更多的數據庫調用? – Alex 2010-08-29 13:45:29

0

嘗試:

@parent.children.detect { |child| child.id == 14 } 

這將返回對象而不查詢數據庫。然後你可以調用它的.name方法。