how to create a guest user in Rails 3 + Devise

前端 未结 3 1625
闹比i
闹比i 2021-01-31 23:22

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

相关标签:
3条回答
  • 2021-01-31 23:50

    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 
    
    0 讨论(0)
  • 2021-01-31 23:55

    Checkout this rails cast about guests users. Details about Devise at around 5:40.

    0 讨论(0)
  • 2021-02-01 00:00

    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
    
    0 讨论(0)
提交回复
热议问题