Ruby on rails 如何使用Desive将用户默认设置为来宾用户?
我希望访问我的网站的访问者如果没有登录,会有一个默认的“来宾用户”会话。我已经在users表中创建了Guest用户,但是如果该用户未登录,我如何为该用户启动会话 我可以在ApplicationController中的筛选器之前使用:set\u用户:Ruby on rails 如何使用Desive将用户默认设置为来宾用户?,ruby-on-rails,authentication,devise,Ruby On Rails,Authentication,Devise,我希望访问我的网站的访问者如果没有登录,会有一个默认的“来宾用户”会话。我已经在users表中创建了Guest用户,但是如果该用户未登录,我如何为该用户启动会话 我可以在ApplicationController中的筛选器之前使用:set\u用户: class ApplicationController < ActionController::Base before_filter :set_user private def set_user current
class ApplicationController < ActionController::Base
before_filter :set_user
private
def set_user
current_user || # Initiate a session with Guest here. But how?
end
end
class ApplicationController
要初始化当前用户,只需创建一个新的用户实例。您还可以在其中保存一些唯一标识符,也可以将其保存在cookie中,以便在用户返回时识别他
例如:
current_user ||= User.find_or_create_by_session_id( some_session_id_from_cookie )
这就是诀窍:
sign_in(user)
我真不敢相信花了多长时间才弄明白 有一个称为“当前用户”的设计帮助程序。我需要从我的角度给那个助手打电话。我不知道那个助手用什么来获取用户的值,但是仅仅实例化一个用户对象是不行的。。。不知怎的,我是这么想的,但仔细想想,我真的不知道这是从哪里来的。下次我会先思考。