用ruby中的新字符串替换散列键

时间:2015-07-03 08:39:02

标签: ruby-on-rails ruby hash

公司模式:有一个属性name和公司has_many users

用户建模:用户belongs到公司。

查询

执行查询后,下面是我的结果。

users = {1360=>[#<User id: 2183, company_id: 1360, name: "XYS">, #<User id: 2184, company_id: 1360, name: "XYS1">], 1361=>[#<User id: 2185, company_id: 1361, name: "ABC">]}

在users对象中,还有一列company_name,它在查询中作为别名获取,因为我只想要company_name而不是其他属性。

users = {1360=>[#<User id: 2183, company_id: 1360, name: "XYS", company_name="One">, #<User id: 2183, company_id: 1360, name: "XYS", company_name="One">], 1361=>[#<User id: 2185, company_id: 1361, name: "ABC", company_name="Two">]}

这是我想要的输出。 (Key将是company_name,其velue将是用户信息数组(名称和ID))

users = {"One"=>[["XYS", 2183], ["XYS1", 2184]], "Two"=>[["ABC", 2185]]}

我该怎么做?因为当我尝试用名称替换键(id)时出现错误

1 个答案:

答案 0 :(得分:2)

试试这个

users.map{  |_,array| [array.first.company_name, array.map{ |a| [a.name, a.id] }] }.to_h