Пропустить до фильтра с помощью Active Admin

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

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

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

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

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

Ответ 2

Я не смог получить решение @coreyward для работы, но отредактировал config/application.rb в соответствии с этим сообщением об установке и добавил:

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

    # Other code
end

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

Ответ 3

и ядро, и Sooie правы... но только частично, чтобы остановить ваше одеяло authorize_user! фильтр, влияющий на active_admin, вам нужно реализовать оба их ответа...

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

config.skip_before_filter :authorize_user!

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

controller do
  skip_before_filter :authorize_user!
end

Ответ 4

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

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

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