現在コードにある配列とは異なる種類の構造を作成しようとしています。
オブジェクト (アクティブ ディレクトリ オブジェクト) の配列を取得したので、 from 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>>