我经常使用cancancan检查特定类/示例的权限。
class Ability
include CanCan::Ability
def initialize(user)
can do |action, subject_class|
# Lookup users permission inside of this block.
# action might be :read
# subject_class might be a class like Company.
end
end
end
上面的例子将为您的工作提供帮助 user.can?(:read, Company)
.
我现在已经为多个类创建了一个权限集。我的应用程序有多个我想要分组的设置 AccountingSetting
这样我就可以通过 user.can?(:read, "AccountingSetting")
. 自从 AccountingSetting
不是实际的模型/类。我将字符串传递给该方法。这不起作用,因为 subject_class
参数返回 String
-类而不是实际字符串。
cancancan不支持权限的字符串查找,还是我遗漏了什么?
1条答案
按热度按时间643ylb081#
对文档进行了深入研究,找到了一个解决方案:
https://rdoc.info/github/cancancommunity/cancancan/cancan/ability#can-示例法
can块返回第三个参数,该参数将包括所有none类参数的值。
那么什么时候
can?(:read, 'AnythingPossibleThingy')
被称为object
参数中填充了'AnythingPossibleThingy'
我可以使用它来查找权限。