Я стараюсь изо всех сил манипулировать данными в рубине.groupby массив хэшей в массив хэшей массивов?
Учитывая этот массив хэшей
peepz = [
{
:name => 'ted',
:phone => '555-1234',
:color => 'red'
},
{
:name => 'bill',
:phone => '555-2222',
:color => 'green'
},
{
:name => 'ted',
:phone => '555-3333',
:color => 'orange'
},
{
:name => 'dan',
:phone => '555-7777',
:color => 'violet'
},
{
:name => 'ted',
:phone => '555-4444',
:color => 'yellow'
},
{
:name => 'dan',
:phone => '555-6666',
:color => 'orange'
}
];
я пожелаю этот выход
peepz2 = [
{
:name => 'ted'
:phone => ['555-1212','555-3333','555-4444']
:color => ['red','orange','yellow']
},
{
:name => 'bill'
:phone => ['555-2222']
:color => ['green']
},
{
:name => 'dan'
:phone => ['555-7777','555-6666']
:color => ['violet','orange']
},
]
вот что я до сих пор.
def groupbyer (peepz, *fields)
peepz.groupby do |peep|
key = ''
fields.each do |field|
key += peep[field].to_s
end
end.each do |group|
????
end
end
groupbyer(peepz, :name)
Этот метод должен быть обобщен. он не может жестко закодировать поля peepz
Какой хороший рубиновый способ закончить это?