Prvky se zdají být vnořeny hlouběji, než jste očekávali. Změňte svůj kód na:
# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }
Vysvětlení:
Co vidíte jako výstup p task
:
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
To znamená, že se jedná o pole prvků. Všimněte si přiložených složených závorek [ ]
. V tomto případě tedy musíte udělat task.first
, což vrátí:
#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">
Odtud byste měli mít přístup k hodnotám prvku pomocí klíče, jak jste zamýšleli:
task.first[:date]