我继承了在我的控制器中工作的资源,并且我使用 cancan 进行授权。但是,我在编写所需的能力时遇到了问题。
我可以通过 2 种方式显示特定顺序:
/profile/123/orders/321
/store/456/orders/321
在控制器中:
class OrdersController < ApplicationController
inherit_resources
belongs_to :profile, :store, :optional => true
load_and_authorize_resource
...
end
角色是:用户(模型中的has_one:profile)和经理(模型中的has_one:store)
要求(用文字表示)是:
- 经理可以在(属于)他的商店的上下文中显示订单。
- 经理无法在任何用户配置文件的上下文中显示订单(应拒绝访问)
- 用户可以在其个人资料的上下文中显示订单
- 用户无法在任何商店的上下文中显示订单(被拒绝)
我无法满足这些要求,也许我应该以特殊方式或实际上以两种方式加载资源?直觉告诉我,在这两种情况下,对订单的访问都应该基于对父资源的访问。谢谢你的帮助。