Похоже, что ваш сеанс содержит старые данные, в частности идентификатор (1) пользователя, которого больше не существует.Попробуйте обработать исключение RecordNotFound
, вызванное ActiveRecord, и вернуть nil:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
rescue ActiveRecord::RecordNotFound
end
Чтобы перенаправить, вам нужно добавить второй before_filter
, который проверяет пользователя и обрабатывает перенаправление на путь входа в систему:
before_filter :require_user
def require_user
redirect_to login_path unless current_user
end
Не забудьте опустить require_user
для действия входа в систему, добавив skip_before_filter :require_login
к тому, какой контроллер управляет вашей аутентификацией.