🌟
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 }
これでも意図はわかりやすいもののやや冗長 + 全走査がされるのでいまいちには見えますねえ。
Discussion