目前我有一个带有设计的rails 3应用程序。它要求用户注册/登录访问。
我想启用访客用户。因此,当用户访问某些视图时,会为该用户创建一个访客用户帐户,然后在他们验证/注册该访客用户时,/然后将其升级为普通用户。
将应用视为聊天室。我希望访客用户能够加入聊天室,然后将oauth加入twitter进行注册。但我不想强迫用户在加入之前注册。
建议?
我发现了这个:https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user
问题是我添加了助手,但不了解如何启动current_or_guest_user。还不确定如何启动每个特定的允许视图?
有什么想法吗?指针?感谢
答案 0 :(得分:14)
另一种更透明的方式是:
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
答案 1 :(得分:3)
关注维基后,只需将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
答案 2 :(得分:2)
结帐this rails cast有关访客用户的信息。关于Devise的详细信息大约在5:40。