Похоже, вы можете начать с вашего @shipment.packages
, а затем сгруппировать их по user_id
, например, так:
@shipment.packages.group_by(:user_id)
В результате вы получите хешиндексируется user_id
, где значения - это список пакетов отгрузки с указанным user_id
.
Например, предположим, что у вас есть следующие пакеты:
+----------------------------+
| id | user_id | shipment_id |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 3 |
| 4 | 2 | 1 |
| 5 | 3 | 1 |
| 6 | 2 | 1 |
+----------------------------+
Тогда вы получите что-токак это:
@shipment = Shipment.find(1)
@shipment.packages.group_by(&:user_id) #=> {1 => [<Package id=1>], 2 => [<Package id=4>, <Package id=6>], 3 => [<Package id=5>]}