ruby-on-rails - Rails - 从参数哈希中获取所有键

标签 ruby-on-rails ruby hash

为了提高我的 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/

相关文章:

javascript - 使用 javascript 跟踪链接

python - 优雅的结构化文本文件解析

ruby-on-rails - 在 Rails 之外使用 ActiveRecord::Database::Tasks 时,我需要配置什么以避免开发数据库未配置错误?

security - 每个密码需要一次 "random salt"还是每个数据库只需要一次?

.net - .NET 通用字典是否应该使用等于它将包含的项目数的容量初始化?

ruby-on-rails - Rails 缺少模板错误,只是间歇性的

php - Web 开发人员是否值得学习 C?我会使用它吗?

python - NetworkX Graph 对象的“同构”比较,而不是默认的 'address' 比较

ruby-on-rails - 在 Heroku 的远程存储库之间切换

ruby - 从另一个私有(private)方法中使用 self.xxx() 调用私有(private)方法 xxx,导致错误 "private method ` xxx' called”