Пропустить до фильтра с Active Admin - PullRequest
11 голосов
/ 29 сентября 2011

Я использую devise и недавно добавил активного администратора, который создал отдельную таблицу admin_users для сохранения администраторов.

Все работает нормально с Active Admin, когда я пытаюсь войти в систему и просмотреть.Тем не менее, мой контроллер приложений имеет это для обычных пользователей:

before_filter :authenticate_user!, :except => [:show, :index]

Из-за этого, когда внутри активного административного интерфейса, когда я пытаюсь что-либо редактировать или удалять, он просит меня войти в систему. Я узнал, чтоskip_before_filter может использоваться внутри контроллера, в котором нужно исключить before_filter, однако у Active Admin нет файла контроллера в папке контроллеров или в любом месте моего проекта, который я мог бы посмотреть.

может кто-нибудь подсказать, какчтобы сделать активным администратором игнорирование приложения beofre_filter, которое я хочу применить на всех клиентах / пользователях?

Ответы [ 4 ]

37 голосов
/ 29 сентября 2011

В config/initializers/active_admin.rb вы можете добавить следующее:

config.skip_before_action :authenticate_user!

Вы также можете использовать предоставленный DSL для изменения контроллера ActiveAdmin: http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller

Примечание: для версий Rails до 5.0 вы захотите использовать skip_before_filter.

3 голосов
/ 04 октября 2012

Я не смог заставить работать решение @ coreyward, но отредактировал config/application.rb согласно этой публикации Devise и добавил:

ActiveAdmin.register_page "Dashboard" do
    controller do
      skip_before_action :name_of_filter_to_skip
    end

    # Other code
end

до admin/dashboard.rb сделали свое дело. Это не сработало, просто отредактировав config/application.rb в одиночку. Обязательно перезапустите свой сервер!

1 голос
/ 15 ноября 2013

Я не смог заставить решения @fringd и @coreyward работать на Rails4 (используя главную ветку ActiveAdmin).

Итак, я переместил методы фильтра (у меня есть два фильтра: authorize_user! и check_user_status) в новый концерн и включил этот созданный модуль в контроллеры, которые имели эти фильтры ( за исключением ApplicationController, которая должна оставаться чистой).

Затем перезапустил сервер, и проблема решена.

1 голос
/ 29 ноября 2012

и Кори, и Суи правы ... но только частично, чтобы остановить ваше одеяло authorize_user! Чтобы не влиять на active_admin, вам нужно реализовать оба их ответа ...

конфиг / Инициализаторы / active_admin.rb

config.skip_before_filter :authorize_user!

приложение / администратор / dashboard.rb

controller do
  skip_before_filter :authorize_user!
end
...