Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用Desive将用户默认设置为来宾用户?_Ruby On Rails_Authentication_Devise - Fatal编程技术网

Ruby on rails 如何使用Desive将用户默认设置为来宾用户?

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

我希望访问我的网站的访问者如果没有登录,会有一个默认的“来宾用户”会话。我已经在users表中创建了Guest用户,但是如果该用户未登录,我如何为该用户启动会话

我可以在ApplicationController中的筛选器之前使用:set\u用户:

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)

我真不敢相信花了多长时间才弄明白

有一个称为“当前用户”的设计帮助程序。我需要从我的角度给那个助手打电话。我不知道那个助手用什么来获取用户的值,但是仅仅实例化一个用户对象是不行的。。。不知怎的,我是这么想的,但仔细想想,我真的不知道这是从哪里来的。下次我会先思考。