我正在尝试从我目前在我的代码中拥有的数组创建不同类型的结构。
我有一个对象数组(活动目录对象),所以可以说我从 db 得到一个:
a = [o1,o2,o3,o4,o5]
我的对象具有属性source_id
,name
哪些是相关属性。
我想从我的数组中的数据创建这样的结构(我想要哈希):
objects = Hash.new { |hash, key| hash[key] = [] }
这将是如何将数据放入新结构中的一个示例:
a.each do |ob|
objects[ob.source_id] << {
:new => '',
:name => {:unformated => ob.name, :formatted => ob.format(:name)}
}
end
我正在尝试复制相同的结构,但在我的情况下它不起作用:
a.group_by(&:source_id).map do |k,v|
{
k=> {
{
:new => '',
:name => {:unformated => v.name, :formatted => ob.format(:name)}
}
}
}
end.reduce(:merge)
这是我得到的错误:
! #<NoMethodError: undefined method `name' for #<Array:0xae542b4>>