如何使用符号键将Object转换为哈希数组

我在尝试:

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 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并继续讨论更多有趣的问题。