Разработать перенаправление на страницу после входа в систему

Я на Рейлс 4.

Я настроил его, поэтому, когда пользователь регистрируется или входит в систему (разработка), он будет перенаправлять на страницу, на которой он был последним. Это работает очень хорошо.

Однако мне трудно понять, как полностью игнорировать администратора. При входе в систему в качестве администратора (админ - это собственная модель) я получаю цикл перенаправления, так как он хочет вернуться на предыдущую страницу и в панель администратора одновременно.

Вот мой application_controller:

after_filter :store_location

  def store_location
    # store last url as long as it isn't a /users path
    session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/ 
  end

  def after_sign_in_path_for(resource)
    session[:previous_url] || root_path
  end

Как лучше всего игнорировать after_sign_in_path_for, если это вход администратора?


person Kathan    schedule 14.07.2015    source источник
comment
admin является объектом пользователя или нет?   -  person Haider Ali    schedule 14.07.2015
comment
Admin — это собственная модель, а не пользовательский объект. @ХайдерАли   -  person Kathan    schedule 15.07.2015
comment
какое поле вы используете для проверки администратора внутри пользовательской модели?   -  person Haider Ali    schedule 15.07.2015


Ответы (1)


Нам нужно поставить по маршруту или другому, так как мы создаем такой метод в нашем application_controller. Простым решением будет приведенное ниже.

def after_sign_in_path_for(resource)
  if resource.admin? #Assuming there is such a function
    root_path
  else
    session[:previous_url] || root_path
  end
end
person coderhs    schedule 14.07.2015
comment
заменил resource.admin? на admin_signed_in? и все заработало. - person Kathan; 15.07.2015