Подтвердить что ты не робот

Уточнить before_filter authenticate_admin?

Я добавил роль администратора для разработки, добавив атрибут admin.

Не могли бы вы сказать мне, правильно ли это создать файл before_filter, который требует подписания администратора:

в любом контроллере:

before_filter :authenticate_admin!

в application_controller

protected
  unless current_user.try(:admin?)      
    redirect_to :new_user_session_path      
  end
4b9b3361

Ответ 1

Перейдите с помощью этого подхода

  before_filter :authenticate_user!
  before_filter do 
    redirect_to new_user_session_path unless current_user && current_user.admin?
  end

Это также гарантирует, что любые гости вынуждены войти в систему. Вам не нужно изменять метод по умолчанию, чтобы принудительно выполнить аутентификацию только для доступа к методу экземпляра admin?

def admin?
  self.admin == true
end

Мой подход заключается в создании атрибута роли и проверке его строкового значения на набор назначенных ролей - он гораздо более гибкий, а не для создания множества логических атрибутов.

Ответ 2

Глядя на ответ выше (Майкл Де Сильва), у меня была проблема с кодом, который он использовал. Он написал путь как символ (:new_user_session_path), но мне нужно, чтобы он был регулярным помощником пути (new_user_session_path). Пока я не изменил это, я получал ошибки, говоря, что путь был недействительным. (Я запускаю Rails 5.)

Надеюсь, что это полезно для других!