我设置了一个假用户来演示我的应用程序。这个想法是,不会登录的访问者应该仍然能够看到真实用户将拥有的所有功能。当未登录的访问者访问该站点时,该应用程序将登录演示用户,访问者将看到属于该演示用户的虚假数据。
考虑到这个目标,我像这样设置我的应用程序控制器。
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
我的问题是我不小心让真实用户无法登录。只要真实用户按下“登录”链接,他们就会被告知他们已经登录(作为演示用户)。
很明显,我所做的与“最佳实践”相去甚远。在这种情况下,聪明的程序员会怎么做?如何让我漂亮的自动登录演示用户保持登录状态,但仍然让真实用户登录?