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

问题描述 投票:0回答:1

我在尝试:

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"}]
ruby-on-rails ruby hash
1个回答
5
投票

看起来你只是试图将Product.first.attributes 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并继续讨论更多有趣的问题。

© www.soinside.com 2019 - 2024. All rights reserved.