Sto tentando di impostare un impegno graduale nella mia app di utilità che le persone possono utilizzare senza registrarsi, ad es. notepad.cc e jsfiddle.net e ho intenzione di creare un utente ospite (con Devise) per l'utente quando "scrive" sull'app.Coinvolgimento graduale, utente ospite persistente con Devise
Ho trovato questa guida sul wiki di Devise https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user che mostra come creare un utente ospite per la durata della sessione del browser. Quello che voglio è che l'utente continui a utilizzare lo stesso account ospite nelle visite successive, fino a quando non si registra, magari quando introduco piani di abbonamento per più funzionalità.
Come posso modificare cosa c'è nella guida per rendere ciò possibile?
codice nella guida linkato sopra:
# 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
e di utilizzarlo nel controller:
@thing.user = current_or_guest_user
@thing.save
Controlla http://railscasts.com/episodes/393-guest-user-record?view=comments –
Sto scavalcando Devise for Sorcery e Railscast è fantastico! –