皆さんは||=のイディオム、使いますよね?例えばこんなふうに
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に代入されることになります。