LoginSignup
3
1

More than 3 years have passed since last update.

【Rails】ぼっち演算子について

Last updated at Posted at 2020-05-24

ぼっち演算子「&.」

レシーバであるオブジェクトが
・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を返す、ぼっちな演算子。

3
1
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
3
1