ぼっち演算子「&.」
レシーバであるオブジェクトが
・nilの場合nilを返す
・nilでない場合、その後の処理を行う
書き方
ぼっち演算子の使い方は
「オブジェクト&.メソッド」
になります。
sessions_controller.rbを例に使い所をみていきます。
app/controller/sessons_controller.rb
class SessionsController < ApplicationController
def new; end
def create
user = User.find_by(email: params[:session][:email].downcase)
if user&.authenticate(params[:session][:password])
log_in user
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render :new:
end
end
def destroy
log_out
redirect_to root_url
end
end
railsチュートリアルでは以下のように書かれています。
app/controller/sessons_controller.rb
# ...
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# ...
Railsチュートリアルの書き方はuserが存在する場合、&&以降の処理を実行するという流れです。userが存在しなけれはnilが返されそれ以降の処理は実行されません。
どちらにするかは好みかと思われますが、ぼっち演算子を使った方が記述が簡単かもしれませんね。
その他メモ
・Ruby2.3で追加された演算子
・「&.」の姿が膝を抱えている人に見えることがからぼっち演算子という名前がついたとのこと
・オブジェクトさんがいなかったら(nil)、メソッド使って遊ぶことができないから寂しくてnilを返す、ぼっちな演算子。