【发布时间】:2016-02-24 17:23:11
【问题描述】:
我正在尝试按值对 json 数组进行排序。
我不能只使用 .order('created_at DESC') 查询数据库,因为我的数组中填充了来自 2 个不同表的信息。
这是我目前的代码:
@user_items = UserItem.where(user_id: @friends.to_a).order('created_at DESC')
@user_pics = Pic.where(user_id: @friends.to_a).order('created_at DESC')
@all_things = @user_pics + @user_items
@all_things.sort_by{"updated_at"}
这不会出错,但是当我运行代码时,列表中的第一件事始终是所有图片,然后是所有项目。所以,这行代码似乎什么也没做。
这是user_pics[0] 的样例:
{"id"=>15, "user_id"=>2, "name"=>"New titles", "creator"=>nil, "size"=>nil, "created_at"=>Sun, 14 Feb 2016 02:41:12 UTC +00:00, "updated_at"=>Sun, 14 Feb 2016 02:41:12 UTC +00:00 ...}
编辑 1
遗憾的是,建议的答案似乎不起作用。下面是一些不同的输出。首先是 2 月 14 日更新的图片,然后分别是 2 月 24 日和 2 月 13 日更新的项目。看起来数组仍然是先排序所有图片,然后是所有项目。
@all_things.sort_by { |a| a[:updated_at] } [0] => {"id"=>15, "user_id"=>2, "name"=>"新标题", "creator"=>nil, "size"=>nil, "mark_count"=>nil, "created_at "=>2016 年 2 月 14 日星期日 02:41:12 UTC +00:00,"updated_at"=>2016 年 2 月 14 日星期日 02:41:12 UTC +00:00 ... }
@all_things.sort_by { |a| a[:updated_at] } [4] => {"id"=>846, "item_id"=>669, "user_id"=>2, "created_at"=>2016 年 2 月 24 日星期三 16:43:54 UTC +00:00, "updated_at"=> 2016 年 2 月 24 日星期三 16:43:54 UTC +00:00, ...}
@all_things.sort_by { |a| a[:updated_at] } [50] => {"id"=>797, "item_id"=>623, "user_id"=>2, "created_at"=>2016 年 2 月 13 日星期六 03:58:29 UTC +00:00, "updated_at"=> 2016 年 2 月 13 日星期六 03:58:29 UTC +00:00, ...}
【问题讨论】:
-
@all_things和@all_feed_cards是同一个东西吗? -
@kjprice 是的,抱歉已修复(代码仍然无法正常工作)
标签: ruby-on-rails ruby json