Ruby on Rails / Active Record / MYSQL - 按字符串属性分组和排序

时间:2013-12-20 05:18:38

标签: mysql ruby-on-rails ruby activerecord

我有一个模型/对象,其日期属性为字符串,此代码为:

Model.all.group_by { |t| t.date }

这给我一个像{“06/11/2013”​​=> [对象5,对象17],“07/18/2013”​​=> [...],“05/02/2013 “=> [...]}(其中包含所有模型的属性)。

似乎没有按照这种方式按日期排序。事实上它几乎跳了起来。

我有办法添加

.order('date ASC')

在这里以某种方式,以便哈希按日期排序?

2 个答案:

答案 0 :(得分:1)

如果你这样做

Model.all.group_by{ |t| t.date }.sort

然后你会得到排序结果,但它将是双数组。您可以将此数组转换为哈希值或相应地使用。

答案 1 :(得分:0)

您可以使用T-SQL CAST或CONVERT。

关于你的数据库(MySQL?)我认为这样可行:

Model.all.order('CAST(date AS TIMESTAMP) asc')

or

Model.all.order('CAST(created_at AS DATETIME) asc')

但是你的字符串格式应该是可转换的,否则你不能转换类型