我所做的表面听起来微不足道。我想获取ActiveRecord对象并构建一个包含以下格式的哈希:
拿@records并将其转换为:
{ record.id => [record.attr1, record.attr2], record.id => [...] }
我试图使用类似的东西来做到这一点:
Hash[*@records.map{|r| [r.attr1, r.attr2 ]}.flatten]
但似乎无法获得正确的语法,使其看起来像上面的示例。
**更新更清楚什么是要求**
让我举一个具体的例子。我有一系列的猫。这是从具有两个属性的Cat模型派生的:name(字符串)和age(int)。我想通过执行以下操作来检索猫的数组:
# I realize this isn't optimal but that's not the point of this question
@cats = Cat.all.entries
然后我尝试将JSON哈希传递给客户端,其中哈希将每个cat实例ID作为键,并且值为具有cat名称和年龄的数组。
在@cats数组上运行相应的Hash / zip组合后,生成的哈希值会变得类似。
{ "15" : ["charles", 3], "18" ["winnie", 5], ... }
我正在尝试做类似的事情:
Hash[*@cats.map{|c| [c.name, c.age ]}.flatten]
这更有意义吗?
答案 0 :(得分:0)
def hash_of_arrays(cats)
{}.tap do |hashie|
cats.each do |cat|
hashie[cat.id] = [cat.name, cat.age]
end
end
end
puts hash_of_arrays(@cats).inspect