簡體   English   中英

Ruby on Rails / Active Record / MYSQL-字符串屬性的分組和排序

[英]Ruby on Rails / Active Record / MYSQL - Group by and order by a string attribute

我有一個帶有日期屬性作為字符串的模型/對象,代碼如下:

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

這給了我一個像{“ 06/11/2013”​​ => [object 5,object 17],“ 07/18/2013”​​ => [...],“ 05/02/2013”​​ => [[ ..]}(其中包含所有模型的屬性)。

這樣看來似乎並不是按日期排序的。 實際上,它幾乎是跳躍的。

我有辦法添加一個

.order('date ASC')

在某種程度上,以便哈希按日期順序排列?

如果你這樣做

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

那么您將獲得排序結果,但它將是雙精度數組。 您可以將此數組轉換為哈希或相應地使用。

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

關於您的數據庫(MySQL?),我認為這可以工作:

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

or

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

但是您的字符串格式應該是可轉換的,否則您不能轉換類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM