私はtask
テーブルを持つデータベースを持っています。この表にはdate
の列があります。これらの日付は文字列としてフォーマットされており、Date
ではありません。MySQLによって返された配列のRuby sort_by、日付は文字列でフォーマットされます
私はこれらのタスクを日付順に並べ替えようとしています。私は既にという名前のタスクの配列を持っています。私は、次のコードを使用してtasksByDate
と呼ばれるソートされた配列に置き換えようとしています。
tasksByDate = tasks.sort_by do |task|
task[:date].to_date
end
私は取得していますエラーは次のとおりです。
TypeError: no implicit conversion of Symbol into Integer
私もそれはそれは日付されることなく、それを並べ替えるかどうちょうど見るためにto_date
ずに試みたが、単なる文字列であること。
date
フィールドは、2016-08-29
のような文字列でフォーマットされています。私はto_date
メソッドをコードのどこか他の場所で使っていましたが、それはうまくいきました。だから、本当にそれが問題だとは思っていませんでした。
編集1
私は、タスクが実際の日付が含まれており、それは説明のようにフォーマットされていることを確認しています。
p task.class
の出力はArray
編集2
p task
の出力は要素はあなたがそれらをことが予想よりも深くネストされているように見える
[#<User id: 10, login: "my.name", hashed_password: "", date: "2016-08-29">]
になっています。したがって、この場合には何をすべきかを返します
task.first
、あります列挙子内に:dateキーが存在することを確認しますか?また、混乱を避けるために、内部の 'タスク'変数名を 'タスク'に変更することもできます。ブロック内に 'p tasks'を入れて、どの値を出力するかを確認してください。 –あなたは出力を見るのが好きですか? tasks.map {| task |タスク} –
@ Pawel Duda内部タスクをタスクに変更し、タスクを印刷すると日付キーを含めて正しく印刷されます。 – trueCamelType