2015-07-03 67 views
1

公司模型:有一个属性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">]} 

在用户对象,还有一个列,它是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">]} 

这是我期望的输出。 (主要是COMPANY_NAME及其velue将用户信息(姓名和身份证)阵列)

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

我怎样才能做到这一点。因为当我尝试更换钥匙(ID)与名称得来的错误

+0

什么是当您更换钥匙(ID)是你的错误?另外,你从哪里得到这个:“一”和“二”?在你想要的结果? – Surya

+0

One和Two是公司的名称。我正在读取我已经在其中获取'name'(如'company_name')的列的用户。 – Vinay

回答

2

试试这个

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

有'''缺少? – Vinay

+0

从技术上讲,这不是“代替钥匙”,尽管:) –

+0

'v'是一个'数组'。我们怎样才能在'array'上调用'company_name'? – Vinay