考虑以下情况
我有一个数据库表,如下所示
user_id user_rank
------------------
22 10
32 9
43 7
31 6
我有一个用户ID为的JSON对象(为简单起见,json中的其他节点被隐藏,请考虑此响应来自api)
{"user_id":[31,22,43,32]}
现在,我如何根据数据库中user_id的排名对JSON结果进行排序并生成一个 结果如
{"user_id":[22,32,43,31]}
在rails中有什么类似LINQ的东西,所以我可以在其中保存json对象值, 并在对象和数据库表之间建立连接以获取已排序的json?
答案 0 :(得分:0)
如果您在json中有用户ID,那么:
require 'json'
user_hash = JSON.parse('{"user_id":[31,22,43,32]}') => {"user_id"=>[31, 22, 43, 32]}
users = User.all(:conditions=>["id in ?",user_hash[:user_id]])
sort_user_id = users.sort { |x, y| (x.user_rank|| 0 )<=> (y.user_rank|| 0)}.map(&:id)
{:user_id => sort_user_id}.to_json
希望有所帮助。