使用Rails中的数据库中的值对JSON进行排序

时间:2012-04-03 07:40:58

标签: ruby-on-rails

考虑以下情况

我有一个数据库表,如下所示

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?

1 个答案:

答案 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

希望有所帮助。