私がしていることの表面は些細に聞こえます。ActiveRecord オブジェクトを取得し、それらから次の形式を含むハッシュを作成したいと考えています。
@records を取得して、次のように変換します。
{ record.id => [record.attr1, record.attr2], record.id => [...] }
次のようなものを使用してこれを実行しようとしています:
Hash[*@records.map{|r| [r.attr1, r.attr2 ]}.flatten]
しかし、上記の例のように見える正しい構文を取得できないようです。
** 求められていることをより明確にするために更新中 **
具体例を挙げてみましょう。私は猫の配列を持っています。これは、name(string) と age(int) の 2 つの属性を持つ Cat モデルから派生します。次のようにして、猫の配列を取得したいと思います。
# I realize this isn't optimal but that's not the point of this question
@cats = Cat.all.entries
次に、JSON ハッシュをクライアントに渡そうとしています。このハッシュには、キーとして各猫インスタンス ID と、猫の名前と年齢の配列である値が含まれています。
結果のハッシュは、適切な Hash/zip コンボが @cats 配列で実行された後のようなものになります。
{ "15" : ["charles", 3], "18" ["winnie", 5], ... }
私は次のようなことをしようとしています:
Hash[*@cats.map{|c| [c.name, c.age ]}.flatten]
これはもっと理にかなっていますか?