如何在Rails3+Devise中创建访客用户



目前我有一个rails 3应用程序。它要求用户注册/登录以进行访问。

我想启用来宾用户。因此,当用户访问某些视图时,将为该用户创建访客用户帐户,然后如果/当他们验证/注册该访客用户时,该访客用户将升级为普通用户。

把这个应用程序想象成一个聊天室。我希望访客用户能够加入聊天室,然后稍后进入推特注册。但我不想强迫用户在加入之前注册。

建议?

我发现:https://github.com/plataformatec/devise/wiki/How-To:-创建访客用户

问题是我添加了助手,但不知道如何启动current_or_guest_user。也不确定如何根据特定的允许视图启动?

有什么想法吗?指针?感谢

另一种更透明的方式是:

def current_user
  super || guest_user
end
private
def guest_user
 User.find(session[:guest_user_id].nil? ? session[:guest_user_id] = create_guest_user.id : session[:guest_user_id])
end
def create_guest_user
  u = User.create(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(99)}@example.com")
  u.save(:validate => false)
  u
end

遵循wiki后,只需将对current_user的调用替换为current_or_guest_user

就视图而言,可以在控制器中使用before_filter进行操作。

如果看不到你的任何代码,很难猜测,但在伪代码中,它会像一样

class ChatController < ApplicationController
 before_filter authenticate_user!, :except => [:join]  #this will force users to log in except for the join action
  def join
   chat_handle = current_or_guest_user.handle
   # some more code...
  end 

签出这条关于访客用户的轨道广播。关于Devise的详细信息,大约在5:40。

最新更新