Another option is not to sign the guest user, but current_user returns the guest user in the absence of a signed user.
Below, if the user is not subscribed, then current_user will return the guest user. Thus, any controller that is accessed without access does not need authenticate_user! in front of the filter.
def current_user super || guest_user end 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 token = SecureRandom.base64(15) user = User.new(:first_name => "anonymous", :last_name => 'user', :password => token, :email => "#{ token@example.com }") user.save(:validate => false) user end
Kris source share