0

我有一个订单资源,嵌套在用户下:

ActiveAdmin.register Order do
  belongs_to :user
end

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

我现在还想创建一个订单资源,以获取整体视图。理想情况下,我会这样做:

ActiveAdmin.register Order do
end

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

但这不起作用,因为它正在创建相同的底层类(我假设)。

基于,我应该可以使用它as: 'all_orders',但实际上这似乎仍然会影响同一个类,并最终得到类似的路线/admin/users/:user_id/all_orders/...

那么,如何orders在 URL 中同时设置和操作两个订单资源?

4

2 回答 2

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在 URL 中,但它是我能找到的最接近解决方案的方法。任何更优雅的东西都非常感谢。

于 2013-10-09T13:53:36.837 回答
0

我认为这可能是最好的选择,详见此处

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

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

我希望可以选择为两者做不同的事情,因此仍然可以选择可以单独定义它们的选项。如果没有更好的选择,我会在这里留下这个答案,因为它是合理的。

于 2013-10-09T11:08:05.643 回答