場合分けのあるアクションをどのように綺麗に書くか と関連してますが。
webサービスのルート/
を表示するとき、
- 未ログインなら通常のトップページ
- ログイン済みならマイページ
のようになるwebサービスは結構あると思います。facebookやtwitterなどが該当しますね。
これをrailsでふつうに実装すると、単一のアクションにまったく別の二種類のロジックが含まれることになります。
class WelcomeController < ApplicationController
skip_before_action :authenticate
def index
unless logged_in?
# トップページ用のロジック
return
end
# マイページ用のロジック
render 'mypage'
end
end
上記は単純な例なので二種類ですが、場合によっては三種類以上の画面を出し分けたいケースもあるかもしれません。
これ、もっと綺麗にかける方法はないかと考えているのですが良い方法知っている人いませんか。