2015-08-16 3 views
-3

У меня есть группа записей, возвращаемых запросом Active Record. Мне нужно как-то перебирать их, чтобы создать массив хэшей такого рода выглядит как:Ruby Array of Hashes

[ 
    { '15/01/2013': 3 }, 
    { '24/051/2012': 1 }, 
    { '08/07/2015': 22 } 
] 

записей возвращенных будет в форме, имеющей 3 записи для первого, 1 записи для второго и 22 записей для третьего. Мне в основном нужен способ превратить это в простой хеш, как указано выше.

Вот пример моего выхода DB:

[ 
    { 
     "item_id": 21728, 
     "id": 31731, 
     "notes": "sample", 
     "date": "2014-09-12", 
     "created_at": "2015-08-13T15:16:06.074Z", 
     "updated_at": "2015-08-13T15:16:06.074Z" 
    }, 
    { 
     "item_id": 21728, 
     "id": 31732, 
     "notes": "sample", 
     "date": "2014-09-12", 
     "created_at": "2015-08-13T15:16:06.104Z", 
     "updated_at": "2015-08-13T15:16:06.104Z" 
    }, 
    { 
     "item_id": 21728, 
     "id": 31733, 
     "notes": "sample", 
     "date": "2014-09-13", 
     "created_at": "2015-08-13T15:16:06.112Z", 
     "updated_at": "2015-08-13T15:16:06.112Z" 
    } 
] 
+2

Итак, может быть, вы можете показать нам запрос и вывод? –

+0

@ Зелёный Хорошо, добавлен вывод моей базы данных. Спасибо – rctneil

+1

это 'json'. в Ruby 'json! = hash' –

ответ

0

Допустим, ваши результаты БД хранятся в массиве с именем результаты.

results.group_by(&:date).map{|k,v| {k => v.count}} 

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

Смежные вопросы