我有一个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/...
但是这不起作用,因为它创建了相同的底层类(我假设)。
它基于this显示我应该可以使用as: 'all_orders'
,但实际上这似乎仍会影响同一个类,最终会出现像/admin/users/:user_id/all_orders/...
这样的路由
那么,如何在URL中使用orders
设置和独立运行订单资源?
答案 0 :(得分:0)
我认为这可能是最好的选择,详见here:
ActiveAdmin.register Order do
belongs_to :user, optional: true
end
# Routes at:
# /admin/orders/...
# /admin/users/:user_id/orders/...
我希望可以选择为两者做不同的事情,因此仍然可以理解它们可以单独定义的选项。如果没有更好的选择,我会在这里留下这个答案,因为它是合理的。
答案 1 :(得分:0)
另一种解决方案,非常hacky但提供我需要的是:
# 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
,但它最接近我能找到的解决方案。任何更优雅的东西都非常赞赏。