为了提高我的 Rails
应用程序安全性,我想知道如何从参数哈希中获取所有 键
哈希示例:
params =
{"id"=>23, "name"=>"test", "infos"=>{"data"=>"er323e3ee23reQir", "signed"=>true}}
如果我执行 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"]
关于ruby-on-rails - Rails - 从参数哈希中获取所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32561251/