Ryo.gift | Web developer blog

Web開発者のブログです。

Hash#transform_keysを利用する

目次

  1. Hash#transform_keysを利用する
  2. 変更前
  3. 変更後
  4. まとめ

1. Hash#transform_keysを利用する

f:id:ryogift:20210620234135j:plain
先日行った知床峠の写真です。本記事とは無関係です。

久しぶりにRuby on Rails APIモードのアプリを確認していたら、rubocop さんからの警告が表示されていました。 Class: RuboCop::Cop::Style::HashTransformKeys の警告でハッシュのキーを変換するだけで to_h などのメソッドは利用せずに transform_keys を利用することによって、単純で高速な呼び出しに変更できるそうです。

2. 変更前
def lower_camelize_keys(object)
  if object.is_a?(Array)
    object.map { |item| item.to_h { |k, v| [k.to_s.camelize(:lower).to_sym, v] } }
  else
    object.to_h { |k, v| [k.to_s.camelize(:lower).to_sym, v] }
  end
end

3 変更後
def lower_camelize_keys(object)
  if object.is_a?(Array)
    object.map { |item| item.transform_keys { |k| k.to_s.camelize(:lower).to_sym } }
  else
    object.transform_keys { |k| k.to_s.camelize(:lower).to_sym }
  end
end

4 まとめ

キーバリューのバリューを省略できて、可読性が高くなりましたね。習慣的に RubyRuby on Rails の動向を確認していないと便利なメソッドが追加されても気づかないままです。少しづつ確認し始めようかなと思いました。