6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

current_userの↓説明できる?

Last updated at Posted at 2019-03-23

これって元々どうなってたの?

app/helpers/sessions_helper.rb
def current_user
    @current_user ||= User.find_by(id: session[:user_id])
end

っていうかこれどう動いてたんだっけ?

##Lv.1 if文

if @current_user.nil?
  @current_user =  User.find_by(id: session[:user_id])
else
  @current_user =  @current_user
end

##Lv1.1 asmさんからご提案頂きました。

@current_user = if @current_user.nil?
                  User.find_by(id: session[:user_id])
                else
                  @current_user
                end

「移り変わり」感がよりイメージしやすくなりましたね。
##Lv.2 三項演算子
名前でビビりますね。

@current_user = @current_user.nil? ? User.find_by(id: session[:user_id]) : @current_user

これにリファクタリングできたらかっこいいけど…
##Lv.3 or 演算子 「 || 」

@current_user = @current_user || User.find_by(id: session[:user_id])
                 ②  ①

@current_userが無ければ(nil)なら、User-を代入
②userと||のスキマ
 @current_userが存在すれば、@current_userの値はそのまま。

##Lv3.5 大前提

n = n + 1
n += 1

同じ意味でしたね。

##Lv.4 自己代入演算子 「||=」

@current_user ||= User.find_by(id: session[:user_id])
           ①

①Lv.3.5の
 nが@current_userの立場

##まとめ
いきなりif文から「||=」までは難しい。
条件によりけりですが、Lv.2までは大体リファクタリングできる。
今回がかなり特別。

6
3
3

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?