皆さんは||=
のイディオム、使いますよね?例えばこんなふうに
def current_user
@current_user ||= User.find(session[:id])
end
ところで、ユーザーを見つけるロジックがもっと複雑で、複数行に渡って書ける場合はどう書けばいいのでしょうか。
ここでbegin
の出番です。rescue
とのセットで有名ですが、実はrescue
なしでも使えます。
def current_user
@current_user ||= begin
some_complex_logic
to_fetch
user
end
end
この場合、最後のuser
が評価されて@current_user
に代入されることになります。