在我的应用中,Parent
个有很多Child
个。在ParentsController#show
中,我希望用户可以指定多个父母,以便我可以一次显示他们的所有孩子。
在我的控制器中,给定一个@array
,其中包含三个Parent
,其ID为1、2和3,这是发生的情况:
@array.map(&:children).reduce(&:or).map { |i| i.parent_id }.uniq
# => [1, 2, 3]
@array.map(&:children).reduce(&:or).map { |i| i.parent }.uniq
# => [#<Parent:0x00007faff17164b8>]
为什么只有一位父母返回?这是某种活动中的缓存吗?如果是,该如何避免呢?这样行事是个坏主意吗?
答案 0 :(得分:2)
您没有被迫从父母那里开始。那只是
@children = Children.where(parent: parents)
在这种情况下,父对象是Parent
对象或ActiveRecord::Relation
或
@children = Children.where(parent_id: parent_ids)
在这种情况下,parent_ids是整数数组,Parent
模型的ids