#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}]}