Các phần tử dường như được lồng vào nhau sâu hơn bạn mong đợi. Thay đổi mã của bạn thành:
# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }
Giải thích:
Những gì bạn thấy dưới dạng kết quả của p task
:
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
Nó có nghĩa rằng đây là một Mảng các phần tử. Lưu ý dấu ngoặc nhọn đi kèm [ ]
. Vì vậy, những gì bạn phải làm trong trường hợp này là task.first
, sẽ trả về:
#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">
Từ đó, bạn sẽ có thể truy cập các giá trị của phần tử bằng một khóa, giống như bạn đã định:
task.first[:date]