currently I have a rails 3 app with devise. it requires the users to register / signin for access.
I would like to enable guest users. So that when a user visits certain
After following the wiki, just replace calls to current_user
with current_or_guest_user
As far as views goes, do it in the controller with a before_filter.
Without seeing any code from you it is hard to guess, but in pseudo-code it would be something like
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
Checkout this rails cast about guests users. Details about Devise at around 5:40.
Another more transparent way is this:
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