简体   繁体   English

Ruby CanCan具备多个科目(课程)的能力吗?

[英]Ruby CanCan ability with multiple subjects (classes)?

How to have multiple subjects to Cancan ability ? 如何拥有多门康康能力?

I'd like to define ability as: 我想将能力定义为:

can :change_role, Project, Document  do |prj, doc|
   # my logic here
   ..
end

So i check it like this: 所以我这样检查:

prj1 = Project.find(10)
doc1 = Document.find(...)

user.can? :change_role, prj1,  doc1 

And it doesn't work. 而且它不起作用。

But Cancan allows only this: 但是康康只允许这样做:

can :read, Project do |prj|
  ..
end

user.can? :read, prj1

Should I create my proxy class to store two subjects and pass it to ability ? 我是否应该创建代理类来存储两个主题并将其传递给能力?

How to add abilities with multiple classes/subjects ? 如何添加具有多个类别/主题的能力?

do this: 做这个:

user.can? :change_role, [prj1, doc1]

define Ability: 定义能力:

can :change_role, Array do |p|
  prj = p[0]
  doc = p[1]
  ...
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM