🌟

Hash の特定のキーを別のキー名に置き換える

に公開

Hash で特定のキーを別のキーにシュッと変換したかったんですが ActiveSupport とかでもそういう処理を行うメソッドはなさそうだったのですよねぴえん。
とりあえず以下のようなコードは思いついた。

params = {
  id: 1,
  name: "homu",
  age: 14
}

# id -> user_id に変換
params = { user_id: params[:id], **params.except(:id) }

pp params
# => {user_id: 1, name: "homu", age: 14 }

こういういの、稀によく使うので専用メソッドがほしいですねー。
ちなみに ChatGPT に聞いたら #transform_keys を利用するコードを提案されました。

params = {
  id: 1,
  name: "homu",
  age: 14
}

# id -> user_id に変換
params = params.transform_keys {
  case _1
  when :id
    :user_id
  else
    _1
  end
}

pp params
# => {user_id: 1, name: "homu", age: 14 }

これでも意図はわかりやすいもののやや冗長 + 全走査がされるのでいまいちには見えますねえ。

GitHubで編集を提案

Discussion