やっています:
Product.first.attributes.map{|k, v| "#{k.to_sym} => #{v}"}
ただし、次のように出力を受け取ります。
["id => 53", "name = blah"], ["id => 54", "name = blahblah"]
私が欲しいのは:
[{:id=>53,:name=>"blah"}, {:id=>54,:name=>"blahblah"}]
やっています:
Product.first.attributes.map{|k, v| "#{k.to_sym} => #{v}"}
ただし、次のように出力を受け取ります。
["id => 53", "name = blah"], ["id => 54", "name = blahblah"]
私が欲しいのは:
[{:id=>53,:name=>"blah"}, {:id=>54,:name=>"blahblah"}]
Product.first.attributes
文字列ではなくキーの記号を使用してハッシュをハッシュに変換しようとしているようです。symbolize_keys
Rails(実際にはActiveSupport)がHashにパッチを適用していることを呼び出すことで、自分で簡単に行うことができます。
h = Product.first.attributes.symbolize_keys
あなたがこれを言うとき:
"#{k.to_sym} => #{v}"
ハッシュのように見える文字列を作成しているだけで、それほど有用ではありません。キーを長い道のりでシンボル化したい場合は、おそらく次を使用して配列の配列を作成します。
...map { |k, v| [ k.to_sym, v ] }
そして、そのすべてを次のようにフィードしHash[]
ます。
h = Hash[Product.first.attributes.map { |k, v| [ k.to_sym, v ] }]
しかし、私はそのすべてのノイズを気にすることはありません。ただ使用symbolize_keys
して、より興味深い問題に進んでください。