アプリをデモするために偽のユーザーを設定しました。サインインしない訪問者は、実際のユーザーが持つであろうすべての機能を引き続き見ることができるはずです。ログインしていない訪問者がサイトにアクセスすると、アプリはデモユーザーにサインインし、訪問者にはこのデモユーザーに属する偽のデータが表示されます。
この目標を念頭に置いて、アプリケーションコントローラーをこのようにセットアップします。
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_current_user
def demo_user
@demo_user ||= User.find_by_email("demo@example.com")
end
protected
def set_current_user
if current_user.nil?
sign_in(demo_user)
end
end
end
私の問題は、実際のユーザーが誤ってサインインできないようにしてしまったことです。実際のユーザーが「サインイン」リンクを押すと、(デモユーザーとして)すでにサインインしていると通知されます。
明らかに、私が行ったことは「ベストプラクティス」にほど遠いものです。この状況で賢いプログラマーは何をしますか?気の利いた自動サインインデモユーザーを維持しながら、実際のユーザーがサインインできるようにドアを開いたままにするにはどうすればよいですか?