Группировка массивов Ruby по месяцам

#ruby-on-rails #group-by

#ruby-on-rails #группировка по

Вопрос:

У меня есть массив

 @array = [{:start_date=>"13/10/2020", :amount=>32130, :hours=>18, :field=>"blabla", :user_id=>123456}, 
 {:start_date=>"06/10/2020", :amount=>12355, :hours=>18, :field=>"blabla", :user_id=>3211},
 {:start_date=>"02/09/2020", :amount=>55222, :hours=>18, :field=>"blabla", :user_id=>24457},
 {:start_date=>"14/08/2020", :amount=>22565, :hours=>18, :field=>"blabla", :user_id=>24457},
 {:start_date=>"13/08/2020", :amount=>454454, :hours=>18, :field=>"blabla", :user_id=>24457},}]
  

Я хочу, чтобы group_by month (start_date) имел что-то вроде этого :
Октябрь :

     13/10/2020 amount=>32130, hours=>18, field=>"blabla", user_id=>123456}
    06/10/2020", :amount=>12355, :hours=>18, :field=>"blabla", :user_id=>3211
  

Сентябрь:

     02/09/2020", :amount=>55222, :hours=>18, :field=>"blabla", :user_id=>24457
  

Август

     14/08/2020", :amount=>22565, :hours=>18, :field=>"blabla", :user_id=>24457
    13/08/2020", :amount=>454454, :hours=>18, :field=>"blabla", :user_id=>24457
  

Я пытался:

 @array.group_by { |t| (t[:start_date].to_date).strftime('%B %Y') }
  

но это не сработало (массив не сгруппирован по)
Как я могу сделать эту группировку плз?
Спасибо

Ответ №1:

 pry(main)> @array.group_by { |t| Date.strptime(t[:start_date], '%d/%m/%Y').strftime('%B') }
=> {"October"=>
  [{:start_date=>"13/10/2020", :amount=>32130, :hours=>18, :field=>"blabla", :user_id=>123456},
   {:start_date=>"06/10/2020", :amount=>12355, :hours=>18, :field=>"blabla", :user_id=>3211}],
 "September"=>[{:start_date=>"02/09/2020", :amount=>55222, :hours=>18, :field=>"blabla", :user_id=>24457}],
 "August"=>
  [{:start_date=>"14/08/2020", :amount=>22565, :hours=>18, :field=>"blabla", :user_id=>24457},
   {:start_date=>"13/08/2020", :amount=>454454, :hours=>18, :field=>"blabla", :user_id=>24457}]}