F4K*_*4Ke 5 ruby hash ruby-on-rails
为了提高我的Rails应用程序安全性,我想知道如何从参数哈希中获取所有密钥
哈希示例:
params =
{"id"=>23, "name"=>"test", "infos"=>{"data"=>"er323e3ee23reQir", "signed"=>true}}
Run Code Online (Sandbox Code Playgroud)
如果我做 params.keys
我获得了 : ["id", "name", "infos"]
但我想在一个简单的数组中获取所有键,例如: ["id", "name", "infos", "data", "signed"]
有一种简单的方法可以做到这一点吗?
尝试这个:
def deep_hash_keys(h)
h.keys + h.map { |_, v| v.is_a?(Hash) ? deep_hash_keys(v) : nil }.flatten.compact
end
params = {"id"=>23, "name"=>"test", "infos"=>{"data"=>"er323e3ee23reQir", "signed"=>true}}
deep_hash_keys(params) # => ["id", "name", "infos", "data", "signed"]
Run Code Online (Sandbox Code Playgroud)