CanCanCan - 定义能力和语法

CanCanCan - defining abilities & syntax

我正在使用 Rails 4、Devise、Role Model 和 CanCanCan 制作应用程序。

我正在尝试在 ability.rb 中定义能力。

我正在尝试以下操作:

  can :read, Project, {:active => true, :closed => false  &&  Project.sweep.disclosure.allusers => true}

但是,我在上面的行中收到语法错误:

syntax error, unexpected =>, expecting '}'
...ct.sweep.disclosure.allusers => true}

我尝试用 :true 替换 =>,但在这种情况下出现语法错误:

syntax error, unexpected tSYMBEG, expecting '}'
...ect.sweep.disclosure.allusers :true}

我也试过将冒号放在属性的开头之前,在这种情况下我得到了这个错误:

syntax error, unexpected =>, expecting '}'
...ct.sweep.disclosure.allusers => true}

我想不出更多的方法来尝试这个。

我要测试的相关属性在一个名为 Disclosure.rb 的模型中。该模型属于名为 Sweep.rb 的模型。 Sweep 属于一个名为 Project.rb.

的模型

我不知道如何定义能力,这些错误让我筋疲力尽。有谁知道如何使用 CanCanCan 来定义能力,如果知道,请您看看我在定义决定该用户是否可以看到这些项目的属性时做错了什么?

如评论中所述,您应该使用类似

的内容
{:active => true, :closed => false, :sweep => { :disclosure => { :allusers => true } } }