Елементите изглеждат вложени по-дълбоко, отколкото сте очаквали. Променете своя код на:
# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }
Обяснение:
Това, което виждате като резултат от p task
:
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
Това означава, че това е масив от елементи. Обърнете внимание на ограждащите скоби [ ]
. Така че това, което трябва да направите в този случай е task.first
, което ще върне:
#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">
Оттам трябва да имате достъп до стойностите на елемента чрез ключ, както възнамерявате:
task.first[:date]