【发布时间】:2012-01-06 05:21:21
【问题描述】:
我正在尝试在我的实用程序应用程序中建立逐步参与,人们无需注册即可使用它,例如notepad.cc 和 jsfiddle.net,我计划在用户“写入”应用程序时为用户创建一个访客用户(使用 Devise)。
我在 Devise wiki https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user 上找到了本指南,该指南展示了如何在浏览器会话期间创建访客用户。我希望用户在后续访问中继续使用相同的访客帐户,直到他注册,也许当我介绍更多功能的订阅计划时。
如何修改指南中的内容才能实现这一点?
上面链接的指南中的代码:
# file: app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
# if user is logged in, return current_user, else return guest_user
def current_or_guest_user
if current_user
if session[:guest_user_id]
logging_in
guest_user.destroy
session[:guest_user_id] = nil
end
current_user
else
guest_user
end
end
# find guest_user object associated with the current session,
# creating one as needed
def guest_user
User.find(session[:guest_user_id].nil? ? session[:guest_user_id] = create_guest_user.id : session[:guest_user_id])
end
# called (once) when the user logs in, insert any code your application needs
# to hand off from guest_user to current_user.
def logging_in
end
private
def create_guest_user
u = User.create(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(99)}@email_address.com")
u.save(false)
u
end
end
并在控制器中使用它:
@thing.user = current_or_guest_user
@thing.save
【问题讨论】:
-
我正在放弃 Devise for Sorcery 并且 Railscast 很棒!
标签: ruby-on-rails ruby ruby-on-rails-3 devise