0

我已经建立了一个模型关系,当我使用类似于以下的代码时,一切都运行良好:

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

但是我怎么会只给一个特定的孩子打电话给那里 id

例如。

孩子ID是14

想要这样的电话:

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

2 回答 2

0

尝试:

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

这应该返回对象而不查询数据库。然后你可以调用.name它的方法。

于 2010-08-29T18:38:09.600 回答
0

@parent.child[14]很可能无法正常工作,child是一个数组,如果它是一个has_many关系,但数组索引与孩子的 id 不同。所以你可以做这样的事情:

@parent.child.find(14).name

我不太确定,但如果你这样做:

@parent = Parent.find(some_id, :include => :child)
@parent.child.find(some_other_id) # should hit the query cache
于 2010-08-29T13:36:18.060 回答