我在尝试:
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"}]
答案 0 :(得分:5)
看起来你只是试图将Product.first.attributes
Hash转换为带有符号而不是字符串符号的Hash。您可以通过调用Rails(ActiveSupport实际上)已修补Hash的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
然后继续讨论更多有趣的问题。