Как использовать несколько экземпляров Active Admin для полных отдельных моделей
У меня есть 2 модели:
и я хочу предоставить два изолированных интерфейса Active Admin.
Оба они разрабатывают маршруты:
devise_for :users, ActiveAdmin::Devise.config
devise_for :suppliers, ActiveAdmin::Devise.config (can I somehow say ActiveAdmin2::Devise.config)
Пользователь будет иметь доступ к Продуктам, Заказы и Поставщик будут иметь доступ только к продуктам.
В идеале, я хочу иметь разные папки в приложении и представлять разные данные.
пользователь /order.rb
ActiveAdmin.register Order do
filter :email
filter :created_at , :label => "Order Creation Date"
filter :order_created
поставщик /order.rb
ActiveAdmin.register Order do
filter :email
Есть ли способ инициализировать 2 класса ActiveAdmin и запускать их параллельно?
Любой другой лучший способ заставить его работать под тем же веб-сайтом/приложением?
Ответы
Ответ 1
Для этого можно использовать пространства имен.
ActiveAdmin.register Order, namespace: :supplier do
# will be available at /supplier/orders
end
ActiveAdmin.register Order, namespace: :user do
# available at /user/orders
end
Вы можете настроить аутентификацию для каждого пространства имен в config/initializers/active_admin.rb
Например:
config.default_namespace = :user
config.namespace :supplier do |supplier|
supplier.authentication_method = :authenticate_supplier_user!
supplier.current_user_method = :current_supplier_user
supplier.logout_link_path = :destroy_supplier_user_session_path
supplier.root_to = 'orders#index'
end
config.namespace :user do |user|
user.authentication_method = false
user.current_user_method = :current_user
user.logout_link_path = false
Дополнительная информация: http://activeadmin.info/docs/1-general-configuration.html#namespaces