ハッシュにキーがややこしいことになっている時につかえるものたち
環境
rails (5.2.0)
効能
deep
がつくものは値にハッシュ値がある場合、それらの値のハッシュのキーも対象として処理を行う。
例
deep_symbolize_keys
はすべてシンボル化する
▼変化前
hash = { "key1" => "value_a", "key2" => { "child_array" => [{"key" => "value"}, {"key_a" => {"key_a1" => "value"}},], "child_hash" => { "child_child_array" => [1, 2, 3], "child_child_hash" => { key: "deep_value" } } } }
▼変化後
{:key1 => "value_a", :key2 => { :child_array => [{:key => "value"}, {:key_a => {:key_a1 => "value"}}], :child_hash => { :child_child_array => [1, 2, 3], :child_child_hash => { :key => "deep_value" } } } }
arrayの中身も見てくれる
対象のメソッド
# ハッシュをすべてストリングに deep_stringify_keys # ハッシュをすべてシンボルに deep_symbolize_keys # すべてのキーに対してブロックを呼び出した結果で置き換えたハッシュを返します deep_transform_keys.with_index {|k, i| "#{k}.#{i}" }