在我的Rails 5应用程序中,我使用CanCanCan。 我想知道处理新动作和嵌套条件的正确方法是什么。
如果我有一个简单的条件并调用新操作,它将以以下条件启动对象:
can :manage, Product, :discontinued => false
这将导致:
@product = Product.new(:discontinued => false)
https://github.com/ryanb/cancan/wiki/authorizing-controller-actions
现在,如果我有以下嵌套条件:
can :manage, Company, agency: { platform_id: user.platform_id }
CanCanCan当然不能使用代理集启动,但是它仍然可以允许我创建一个新公司,然后在其中选择代理,并在创建它时检查代理platform_id是否属于用户。这将是理想的行为。但是相反,它甚至不让我调用新方法,而是引发了错误。
我认为使用嵌套条件和新方法并不是很常见,但是在我的广泛搜索过程中找不到关于此的任何信息。