Я решил проблему, но, на мой взгляд, она немного безобразна. Вот что я сделал.
В методе аутентификации cookie я установил переменную сеанса, указывающую, что использовался метод авторизации cookie.
def login_from_cookie
user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
if user && user.remember_token?
session[:cookie_login] = true **# this is my addition**
self.current_user = user
handle_remember_cookie! false # freshen cookie token (keeping date)
self.current_user
end
end
Затем в: before_filter set_current_user
Я просто проверяю эту переменную и перенаправляю, если она установлена, обязательно устанавливая переменную на ноль.
def set_current_user
Authorization.current_user = current_user
if session[:cookie_login]
redirect_to :controller => :users, :action => :search
session[:cookie_login] = false
end
end
Это не красиво, но работает. Я определенно открыт для любых предложений о том, как убрать это.