Elementy wydają się być zagnieżdżone głębiej, niż się spodziewałeś. Zmień kod na:
# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }
Wyjaśnienie:
Co widzisz jako wynik p task
:
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
Oznacza to, że jest to tablica elementów. Zwróć uwagę na otaczające nawiasy klamrowe [ ]
. Więc to, co musisz zrobić w tym przypadku, to task.first
, co zwróci:
#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">
Stamtąd powinieneś być w stanie uzyskać dostęp do wartości elementu za pomocą klucza, tak jak zamierzałeś:
task.first[:date]