Я пытаюсь настроить постепенное взаимодействие в моем служебном приложении, которое люди могут использовать без регистрации, например. notepad.cc и jsfiddle.net, и я планирую создать гостя (с помощью Devise) для пользователя, когда он «пишет» в приложение.
Я нашел это руководство на вики-странице Devise 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