公司模式:有一个属性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)时出现错误
答案 0 :(得分:2)
试试这个
users.map{ |_,array| [array.first.company_name, array.map{ |a| [a.name, a.id] }] }.to_h