Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ruby sort_by für von MySQL zurückgegebene Arrays, Datum als String formatiert

Die Elemente scheinen tiefer verschachtelt zu sein, als Sie es erwartet haben. Ändern Sie Ihren Code in:

# use '{ }' instead of 'do end' for a single-line blocks
tasksByDate = tasks.sort_by { |task| task.first[:date].to_date }

Erklärung:

Was Sie als Ausgabe von p task sehen :

[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]

Dies bedeutet, dass dies ein Array von Elementen ist. Beachten Sie die einschließenden Klammern [ ] . Was Sie also in diesem Fall tun müssen, ist task.first , was zurückgibt:

 #<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">

Von dort aus sollten Sie wie beabsichtigt über einen Schlüssel auf die Werte des Elements zugreifen können:

task.first[:date]