我的模型有一个日期属性:
'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)
不会中断,但仍会按升序返回数据。
答案 0 :(得分:2)
回答字面问题,
array.sort_by { |item| -item['date'].to_time.to_i }
但是,注释中提出的要点非常有效 - 如果您可以在SQL中对其进行排序,则应该这样做。 (如果您想了解SQL,请使用DBMS进行标记。如果您想了解特定的ORM,请使用这些标记进行标记。)
编辑:谢谢,卡里 - 事实上,OP想要反向排序。答案 1 :(得分:0)
似乎你需要这个: .order(“日期DESC”)。 在“where”之后使用命令。 第一个参数是你的列名,第二个参数“DESC”表示下降,如果你不写第二个参数,ruby会默认提升。 (我希望你能理解我......我不擅长英语..)