Заполнение ruby га sh: - ха sh хешей со значениями массива - PullRequest
0 голосов
/ 24 марта 2020

Мой ответ БД выглядит так:

response = [
{id: 1, name: Kassandra, group: Sparta, role: Mercenary}
{id: 2, name: Alexios, group: Sparta, role: Mercenary}
{id: 3, name: Herakles, group: Athens, role: Champion}
]

Мой метод:

def get_group_details
  grouped_details = []

  response.each do |key|
  key['group'] = key
  grouped_details.push(key)
  end

end

Что приводит к ошибке stack_level_too_deep , при взгляде я считаю, что это приводит к бесконечный l oop ... Что я пытаюсь манипулировать ответом для отправки в UI:

 response: [
   Mercenary: {
         [{id: 1, name: Kassandra, group: Sparta, role: Mercenary}, {id: 2, name: Alexios, group: Sparta, role: Mercenary}]
}
  Champion: [{id: 3, name: Herakles, group: Athens, role: Champion}]
]

Чего мне не хватает?

1 Ответ

1 голос
/ 25 марта 2020

Вы можете использовать Enumerable # group_by для группировки хэшей на основе указанных значений ключа c:

response.group_by { |h| h[:role] }
# =>
{
  "Mercenary": [
    {
      "id": 1,
      "name": "Kassandra",
      "group": "Sparta",
      "role": "Mercenary"
    },
    {
      "id": 2,
      "name": "Alexios",
      "group": "Sparta",
      "role": "Mercenary"
    }
  ],
  "Champion": [
    {
      "id": 3,
      "name": "Herakles",
      "group": "Athens",
      "role": "Champion"
    }
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...