如何从嵌套哈希或YAML文件中删除所有空元素(空列表项)?

推荐答案

你可以像这样添加一个紧凑的散列方法

class Hash
  def compact
    delete_if { |k, v| v.nil? }
  end
end

或者对于支持递归的版本

class Hash
  def compact(opts={})
    inject({}) do |new_hash, (k,v)|
      if !v.nil?
        new_hash[k] = opts[:recurse] && v.class == Hash ? v.compact(opts) : v
      end
      new_hash
    end
  end
end

Ruby-on-rails相关问答推荐

rails中Net::STP的多文件模式

Rails:比枚举更惯用的排序/可比较列表方法?

错误:部署到 Heroku 时找不到模块tailwindcss/defaultTheme

我如何在不在 gemfile 中的 rake 任务中要求 gem?

Ruby on rails 查询不知道怎么写

Ruby on Rails 7 与 React 集成

如何使用 RSpec 和 Devise/CanCan 进行集成测试?

使用brew 软件安装了 elasticsearch,但找不到配置文件

在 Rails 的 ActiveRecord 中,touch 有什么用?

Rails:包含多态关联

从 ActiveRecord 模型的集合中构建哈希

使用devise gem点击确认链接后避免登录?

搭建脚手架时建立关系

可以在 Rails/ActiveRecord 中使用 NULL 指定唯一索引吗?

在 PostgreSQL 中强制字符串的最大长度

rails structure.sql和schema.rb有什么区别

在 Ruby on Rails 中循环对象属性

RoR select_tag 默认值和选项

使用 Rspec 测试关联的正确方法?

rails路由中资源和资源之间的区别?