Elementen verkar vara kapslade djupare än du förväntade dig att de skulle vara. Ändra din kod till:
# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }
Förklaring:
Vad du ser som en utdata från p task
:
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
Det betyder att detta är en array av element. Lägg märke till de omslutande klammerparenteserna [ ]
. Så vad du måste göra i det här fallet är task.first
, som returnerar:
#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">
Därifrån bör du kunna komma åt elementets värden med en nyckel, som du tänkt dig:
task.first[:date]