Rails CanCan:引用 application_controller 中的 resource_instance

Rails CanCan: reference to resource_instance from application_controller

我有一堆扩展 ApplicationController 的控制器,每个控制器加载不同的 cancan 资源,例如UsersController -> @userPostsController -> @post。我想知道,是否可以在不知道实例变量名称的情况下从 ApplicationController 引用资源?类似于 resource_instance.

好的,我得到了最终答案,它是。我探索了 cancancancancan 维护良好的精神 child 并且代码在那里,但并不意味着被使用最终用户。

你可以得到你想要的,它不漂亮:

self.class.cancan_resource_class.new(self).send(:resource_instance)

也就是说,请不要。 cancan_resource_class 没有记录供最终用户使用,并且 :resource_instance 受到保护,因此 send。开发人员可以选择更改此设置并破坏您的应用程序。

如果所有的都有一个company,它们也属于,我建议你嵌套路由,这样所有的路由都有一个:company_id,你可以用它来获得@company object你想要:companies/:company_id/users,等等