Как создать основной и вложенный ресурс 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, но это самое близкое к решению, которое я могу найти. Что-нибудь более элегантное высоко ценится.