Как создать основной и вложенный ресурс ActiveAdmin?

У меня есть ресурс Order, вложенный в User:

ActiveAdmin.register Order do
  belongs_to :user
end

# Routes at:
#  /admin/users/:user_id/orders/...

Теперь я также хотел бы создать ресурс Order для общего просмотра. В идеале я бы просто сделал:

ActiveAdmin.register Order do
end

# Routes at:
#  /admin/orders/...

Но это не работает, потому что он создает тот же базовый класс (я полагаю).

по-видимому, я должен быть в состоянии использовать as: 'all_orders', но на самом деле это все еще влияет на тот же класс и заканчивается маршрутами, такими как /admin/users/:user_id/all_orders/...

Итак, как я могу настроить ресурсы заказа и работать независимо друг от друга, используя orders в URL?

2 ответа

Я думаю, что это может быть лучшим вариантом, как подробно описано здесь:

ActiveAdmin.register Order do
  belongs_to :user, optional: true
end

# Routes at:
#  /admin/orders/...
#  /admin/users/:user_id/orders/...

Я хотел бы иметь возможность делать разные вещи для двух, так что вариант, где они могут быть определены отдельно, все равно будет оценен. Если нет лучших вариантов, я оставлю этот ответ здесь, так как это разумно.

Другое решение, которое очень хакерское, но обеспечивает то, что мне нужно, это:

# models/order.rb
class Order < ActiveRecord::Base
  belongs_to :user
end

# models/order_alias.rb
class OrderAlias < Order
end

# admin/user/order.rb
ActiveAdmin.register Order do
  belongs_to :user
end

# admin/order.rb
ActiveAdmin.register OrderAlias, as: 'AllOrder' do
  menu label: 'Orders'
  index title: 'Orders' do
    # ...
  end
end

Это еще имеет all_orders в URL, но это самое близкое к решению, которое я могу найти. Что-нибудь более элегантное высоко ценится.

Другие вопросы по тегам