gpt4 book ai didi

mysql - Ruby sort_by 用于 MySQL 返回的数组,日期格式为字符串

转载 作者:行者123 更新时间:2023-11-29 11:19:18 27 4
gpt4 key购买 nike

我有一个包含任务表的数据库。在该表中,有一个日期 列。这些日期被格式化为字符串,它们不是Date

我正在尝试按日期对这些任务进行排序。我已经有一个名为 tasks 的任务数组。我尝试使用以下代码将其替换为名为 tasksByDate 的排序数组。

tasksByDate = tasks.sort_by do |task|
task[:date].to_date
end

我收到的错误是:

TypeError: no implicit conversion of Symbol into Integer

我还尝试了不使用 to_date 只是为了看看它是否可以在不作为日期而仅作为字符串的情况下对其进行排序。

日期字段的格式为字符串,如2016-08-29。我在代码的其他地方使用了 to_date 方法,并且效果很好,所以我并不认为这是问题所在。

<小时/>

编辑 1

我已经检查过任务实际上包含日期,并且其格式如所解释的那样。

p task.class 的输出是 Array

编辑2

p任务的输出是

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

最佳答案

这些元素的嵌套似乎比您预期的更深。将您的代码更改为:

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

说明:

您所看到的 p 任务 的输出:

[#<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]

关于mysql - Ruby sort_by 用于 MySQL 返回的数组,日期格式为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39213643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com