2010-11-12 2 views
0

Я хочу, чтобы посетители моего сайта имели сеанс по умолчанию «Guest User», если они не вошли в систему. Я создал гостевой пользователь в таблице моих пользователей, но как мне начать сеанс для этого пользователя, если пользователь не авторизованыКак сделать пользователя Гость пользователем по умолчанию с помощью Devise?

я мог бы:. set_user перед фильтром в ApplicationController:

class ApplicationController < ActionController::Base 

    before_filter :set_user 

    private 

    def set_user 
     current_user || # Initiate a session with Guest here. But how? 
    end 

end 

ответ

2

Это делает трюк:

sign_in(user) 

Я не могу поверить, сколько времени потребовалось, чтобы понять это!

0

Для инициализации current_user просто создать новый экземпляр пользователя. Вы также можете сохранить в нем уникальный идентификатор, который вы также сохраните в cookie, чтобы узнать пользователя, когда он вернется.

Например:

current_user ||= User.find_or_create_by_session_id(some_session_id_from_cookie) 
+0

Существует вспомогательный помощник, называемый current_user. Мне нужно вызвать этого помощника из моих представлений. Я не знаю, что использует этот помощник, чтобы получить значение пользователя, но создание экземпляра объекта User не сделает этого. – AKWF

+0

Хм ... Я почему-то предполагал это, но, думая об этом, я не могу сказать, откуда это взялось. В следующий раз я буду думать. – rausch