Railsエラーノート

ゼロからWebサービスを作るRuby on Rails学習ブログ

「||=」のわかりやすい説明

Railstutorialの第8章で、

def current_user
    remember_token = User.encrypt(cookies[:remember_token])
    @current_user ||= User.find_by(remember_token: remember_token)
  end

という記述が出てくる。
これはremember_tokenがあった場合、
@current_userというインスタンス変数に入れてあげる、と。

この「||=」
「||」自体はどちらかの条件が成立すればtrue。

これを理解するのに、いいコラムがあったそのまま引用。

>> @user
  => nil
  >> @user = @user || "the user"
  => "the user"
  >> @user = @user || "another user"
  => "the user"

最後の@user || "another user"の場合は、
最初の1番目の@userが評価されるので、
コンソールに出力されるのは"the user"だということ。