2013-02-03 41 views
0

我想:如何对象转换为哈希值的阵列符号键

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"}] 

回答

5

看起来你只是试图将Product.first.attributes哈希值转换为哈希值而不是字符串的键符号。你可以很容易对自己通过调用Rails的(实际上的ActiveSupport)已经修复到哈希symbolize_keys

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并转向更有趣的问题。

+0

非常感谢您的好评。相信与否我想知道漫长的道路。 – Abram