本文へスキップ
BecomeCoder

Rubyのエラー · エラー1

NoMethodError ― nilに対してメソッドを呼んだ

nil(値が無いことを表す特別な値)に対して、通常のオブジェクトのようにメソッドを呼ぶと出ます。ハッシュ配列に無いキーを読んだ結果が nil になり、それに気づかず次の処理を続けてしまうのが典型パターンです。

出るコード

user = { name: "Aoi" }
puts user[:age].upcase   # :age キーは無いので nil が返る

エラーメッセージ

undefined method 'upcase' for nil:NilClass (NoMethodError)

直し方

まず値が nil でないかを確認します。&.(ぼっち演算子)を使うと nil のときは自動的に nil を返し、エラーになりません。

puts user[:age]&.upcase   # nil ならそのまま nil