0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ひとりアドベントカレンダーAdvent Calendar 2024

Day 13

【Rails】8.0.0からHashWithIndifferentAccess#stringify_keysがハッシュ以外も文字列にするようになった

Last updated at Posted at 2024-12-12

概要

元々あったコードを8.0.0に持って行ったらエラーになったので共有です

8.0.0でHashWithIndifferentAccess#stringify_keysの挙動が変更されました

内容

HashWithIndifferentAccessとは、その名の通り無差別にアクセスできるハッシュのこと

どういうことかというと

{ name: "Boku", "age": 1 }

というHashがあった時、

musabetsu = { name: "Boku", "age": 1 }.with_indifferent_access

とすると

puts musabetsu[:name]
# => Boku

puts musabetsu["name"]
# => Boku

ハッシュでも文字列でもアクセスできるようになる

ただのハッシュだと、当然keyに登録していない方はnilが帰ってくる

musabetsu_zyanai = { name: "Boku", "age": 1 }
puts musabetsu_zyanai[:name]
# => Boku

puts musabetsu_zyanai["name"]
# => nil

ここで、ここでハッシュのkeyをシンボルでも文字列でもないものにしてみる

koreha_dou = { 1 => "suji ha?" }.with_indifferent_access

ここで8.0.0とそれ以前で挙動が変わってくる

# 8.0.0以前
puts koreha_dou
{ 1 => "suji ha?" }


# 8.0.0以降
{ "1" => "suji ha?" }

社内ライブラリなどで、数字がkeyに入る可能性がある場合は注意してみてください

リンク

変更PR

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?