基于Date按降序对JSON哈希数组进行排序

时间:2015-08-19 22:10:58

标签: ruby sorting date

我的模型有一个日期属性:

'date'              => { 'type' => 'date'    }

我正在查询基于user_id属性并显示结果列表,然后我将其转换为要在路径中返回的JSON数组。

modelObj = Models::Persistence::ModelName.where(:user_id => user_id)
return modelObj.to_json

这给了我一个哈希数组,每个哈希都有一个日期属性。如何根据日期对哈希值进行排序?我尝试将日期排序转换为to_i,但这不起作用。如何根据Date对象进行降序排序?

我尝试在.order(:date)之后添加.where,这样我就不会对JSON数组进行排序。这给了我

NoMethodError: undefined method `__sort_option__' for :date:Symbol

我错过了什么? .order(date: :desc)不会中断,但仍会按升序返回数据。

2 个答案:

答案 0 :(得分:2)

回答字面问题,

array.sort_by { |item| -item['date'].to_time.to_i }

但是,注释中提出的要点非常有效 - 如果您可以在SQL中对其进行排序,则应该这样做。 (如果您想了解SQL,请使用DBMS进行标记。如果您想了解特定的ORM,请使用这些标记进行标记。)

编辑:谢谢,卡里 - 事实上,OP想要反向排序。

答案 1 :(得分:0)

似乎你需要这个:             .order(“日期DESC”)。 在“where”之后使用命令。  第一个参数是你的列名,第二个参数“DESC”表示下降,如果你不写第二个参数,ruby会默认提升。 (我希望你能理解我......我不擅长英语..)