Я пробовал установить ActiveAdmin в приложение rails, у которого уже есть модель Admin *, и все работает, пока я не попытаюсь запустить какой-либо код (например, запустить спецификации или запустить сервер rails), которому нужен доступ к классу Admin - тогда он не работает, как если бы проблема была с моим классом администратора:

foo/app/models/admin.rb:1:in `<top (required)>': Admin is not a class (TypeError)
from bar/.rvm/gems/ruby-1.9.2-p320/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'

* В моем случае я использовал --skip-users, чтобы я мог повторно использовать свою модель администратора, но это происходит независимо от того, делаете вы это или нет. Это также происходит, если вы делаете:

rails generate active_admin:install Admin

Как я могу заставить ActiveAdmin сосуществовать с моделью (или другим классом) под названием Admin

1
Tim Diggins 23 Янв 2013 в 16:00

1 ответ

Лучший ответ

Мне потребовалось время, чтобы разобраться с этим (в предыдущем проекте я уступил и просто переименовал модель).

Было предложено несколько патчей, но на самом деле есть отличный вариант конфигурации, который это исправляет:

Отредактируйте инициализатор в config/initializers/active_admin.rb так, чтобы пространство имен по умолчанию было другим (вы можете пропустить пространство имен по умолчанию с помощью config.default_namespace = false, но я этого не пробовал).

Я выбрал для этого admin_ui:

 config.default_namespace = :admin_ui

Для этого может быть больше тонкости, поэтому вы можете (если хотите) сохранить маршрут / admin / вместо admin_ui, но для меня этого было достаточно - официальная документация по этому поводу находится по адресу http://activeadmin.info/docs/1-general-configuration.html#namespaces, но не упомяните эту причину для изменения пространства имен.

4
Tim Diggins 23 Янв 2013 в 16:00