sql >> Database teknologi >  >> RDS >> Mysql

Ruby sort_by for arrays returneret af MySQL, dato formateret som streng

Elementerne ser ud til at være indlejret dybere, end du forventede, at de skulle være. Skift din kode til:

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

Forklaring:

Hvad du ser som et output af p task :

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

Det betyder, at dette er en række af elementer. Læg mærke til de omsluttende klammeparenteser [ ] . Så hvad du skal gøre i dette tilfælde er task.first , som vil returnere:

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

Derfra skulle du være i stand til at få adgang til elementets værdier med en nøgle, som du havde til hensigt:

task.first[:date]



  1. UnicodeAdvarsel:Unicode-lignende sammenligning kunne ikke konvertere begge argumenter til Unicode

  2. JSON_VALUE() i MySQL

  3. Forebyg rekursiv trigger i PostgreSQL

  4. Fejl i indlejret underforespørgsel i DQL:Klasse '(' er ikke defineret