Я использую authlogic для аутентификации пользователей.В моих контроллерах я использую current_user, определенный (как задокументировано) следующим образом:
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Я также использую Declarative_authorization для управления разрешениями текущего пользователя.Все нормально работает в нормальном сценарии выполнения, но когда я создаю функциональные тесты, которые используют операторы запроса, такие как «get_with», current_user в контроллере равен nil.Я просмотрел вспомогательный код теста Declarative_authorization и обнаружил, что в этом сценарии гем декларативного_авторизации фактически сохраняет текущего пользователя в Authorization.current_user (который, в свою очередь, происходит из Thread.current ["current_user"]).Так что, похоже, что в разных сценариях происходит смешивание действий текущего пользователя.
Мой вопрос: как правильно найти current_user как в обычном режиме выполнения, так и в тестовом сценарии?