30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

ぼっち演算子が便利だった

こんにちは、ぐっちと申します。

開発をしていて、gem devise のヘルパーメソッドで current_user がありますが、ログインしていない時にこのメソッドが呼ばれる事があり、当然ログインしていない為、current_user は nil で、例えば current_user.id としていると

 

 NoMethodError

undefined method `id' for nil:NilClass

 

この様なエラーが出ます。 

 

 これを回避する為に、どうしようか考えて条件で

if current_user == nil 

を記述して、まず current_user が nil の場合の処理を記述する必要があるのかなと思っていましたが、ちょうどスクールが提供しているミニドリルを解いている時に、「ぼっち演算子」なる物が出てきました。

ぼっち演算子

 Ruby 2.3で導入された  &. 演算子safe navigation operator)の事で、

レシーバーであるオブジェクトがnilでなければそのまま結果を返し、nilの場合はnilを返すメソッド。

 

これが今回やりたかった事にドンピシャで

current_user&.id

 と書けば、current_user が nil の場合 nil を返してくれる様になり、エラーが出なくなります。

 

たった一文字追加するだけで、煩わしい分岐を使わないで良くなり感動しました。

 

ちなみに、ぼっち演算子という命名は、&の記号が一人ぼっちで膝を抱えている人に見える所から来ている様です。

f:id:Yamaguchi-T:20191020194711p:plain

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169