遍历合并的AssociationRelation

时间:2019-03-11 14:51:37

标签: ruby-on-rails ruby activerecord

在我的应用中,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>]

为什么只有一位父母返回?这是某种活动中的缓存吗?如果是,该如何避免呢?这样行事是个坏主意吗?

1 个答案:

答案 0 :(得分:2)

您没有被迫从父母那里开始。那只是

@children = Children.where(parent: parents)

在这种情况下,父对象是Parent对象或ActiveRecord::Relation

的数组

@children = Children.where(parent_id: parent_ids)

在这种情况下,parent_ids是整数数组,Parent模型的ids