Постепенное вовлечение, постоянный гостевой пользователь с Devise

Я пытаюсь настроить постепенное взаимодействие в моем служебном приложении, которое люди могут использовать без регистрации, например. 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

8
задан Aen Tan 25 November 2011 в 12:31
поделиться