Перебор объединенной ассоциации - PullRequest
0 голосов
/ 11 марта 2019

В моем приложении Parent s имеют много Child ren.В ParentsController#show я бы хотел, чтобы пользователь мог указать более одного родителя, чтобы я мог показать всех его потомков одновременно.

В моем контроллере дано @array, которое содержиттри Parent с идентификаторами 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 Ответ

2 голосов
/ 11 марта 2019

Вы не обязаны начинать с родителей. А как насчет

@children = Children.where(parent: parents)

в этом случае родители - это массив Parent объектов или ActiveRecord::Relation

или

@children = Children.where(parent_id: parent_ids)

в этом случае parent_ids - это массив целых чисел, идентификаторы для Parent модель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...