階層になっているHashに対して、浅い順にキーを辿ってvalueを得る
Bài đăng này đã không được cập nhật trong 10 năm
自分用にメモ。車輪の再発明感が非常に強いんですが・・・
h = {a: {b: {c: :d}}}
の時、
h.recursive_fetch [:a, :b, :c]
 => :d
ってなるメソッドをHashに追加しました。途中にKeyが無くてもExceptionが出ずに、
h.recursive_fetch [:a, :e, :c]
 => nil
ってなるようにしてます。
class Hash
  def recursive_fetch(keys = [], default = nil)
    keys.inject(self){|value, key|value.try(:[], key)} || default
  end
end
Railsだったら lib 下あたりに置いて、application.rb とか initializers 下あたりから呼ぶようにして使っています。
All rights reserved
 
  
 