在Rails中使用cancancan为非模型支持的控制器基于自定义资源加载和授权

问题描述

我花了很长时间试图解决这个问题,但尚未解决

我有一个没有相应型号的控制器。在路由方面,它是为Organization模型的成员嵌套的。在上述控制器中,@organization是通过url中的ID设置的。

我想要做的是使用cancancan根据该@organization实例授权来自该控制器的操作,但我没有这样做。 我想在ability.rb中说些类似的话

can [:new,:create],InvitationsController do |organization|
    organization.users.include? user
end

我知道我可以将class: Organization设置为load_resource回调,但这导致cancancan对其进行评估,就好像属于Organization类一样。但这会干扰对AuthorizationController的new操作的授权。我无法在此控制器中更改方法名称,因为它是从gem继承的。因此,我必须找出一种方法,以便能够基于自定义设置的实例在ability.rb中授权此控制器。

我希望有人会用cancancan做到这一点,对我来说这似乎不是一个太具体的用例。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)