これって元々どうなってたの?
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までは大体リファクタリングできる。
今回がかなり特別。