下級エンジニアの綴

新しく発見したことを綴っていこうと思っています。夢はでっかく上級エンジニアになることです。

rubyの多次元hashで指定したkeyを削除する時、ActiveSupportのexceptを使うと便利だったのでメモ

require 'active_support'

h = { a: 1, b: 2, c: 3, d: { e: 4, f: { g: 5 }}}

p h.except(:a)      // {:b=>2, :c=>3, :d=>{:e=>4, :f=>{:g=>5}}
p h                 // {:a=>1, :b=>2, :c=>3, :d=>{:e=>4, :f=>{:g=>5}}}
p h[:d].except!(:f) // {:e=>4}
p h                 // {:a=>1, :b=>2, :c=>3, :d=>{:e=>4}}

!を付けると破壊的メソッドになります。
特定のkey以下のkeyを指定することも可能だったのでかなり汎用性が高いメソッドかなと思いました。

参考URL

qiita.com