我的模型有一个日期属性:
'date' => { 'type' => 'date' }我根据user_id属性进行查询并显示结果列表,然后将其转换为在路由中返回的JSON数组。
modelObj = Models::Persistence::ModelName.where(:user_id => user_id)
return modelObj.to_json这给了我一个散列数组,每个散列都有一个date属性。如何根据日期对散列进行排序?我尝试通过将其转换为to_i来进行日期排序,但不起作用。如何根据Date对象进行降序排序?
我尝试在.where之后添加.order(:date),这样就不会对JSON数组进行排序。这给了我
NoMethodError: undefined method `__sort_option__' for :date:Symbol我错过了什么?.order(date: :desc)不中断,但仍然以升序返回数据。
发布于 2015-08-20 08:59:08
为了回答字面上的问题,
array.sort_by { |item| -item['date'].to_time.to_i }但是,注释中提出的观点是非常有效的-如果您已经可以在SQL中对其进行排序,那么您应该这样做。(如果您想了解SQL,请使用DBMS进行标记。如果您想了解某个特定的ORM,请使用这些ORM进行标记。)
编辑:谢谢,Cary -事实上,OP想要的是相反的排序。
发布于 2015-08-20 10:30:10
看起来你需要这个:.order("date DESC")。在"where“之后使用order。第一个参数是你的列名,第二个参数"DESC“表示下降,如果你不写第二个参数,ruby将默认升序。(我希望你能理解我……我不擅长英语……)
https://stackoverflow.com/questions/32106478
复制相似问题