是否可以通过引用另一个能力来定义CanCanCan能力?
例如,我有一个叫做ProjectandProject问询的模型。
我希望允许一类用户阅读项目,然后如果他们能够读取项目,那么他们就可以创建项目问题。
我已将用户阅读项目的能力定义为:
can :read, Project,
{:active => true,
:closed => false,
:sweep => { :disclosure => { :allusers => true }}
} 现在,我想定义一种创建项目问题的能力。我想知道你是否可以这样说:
if can :read, Project, can :create, ProjectQuestion我也尝试过:
can [:create, :read], ProjectQuestion do |pq3|
if can :read Project
end是否可以参照另一种能力来定义一种能力?
PS:这不是我关于cancancan的另一个问题的副本,后者要求语法上的帮助,通过引用db中的属性来表达能力。
发布于 2015-09-07 08:58:08
假设有has/ can __类型的排序,您可以很容易地这样做:
can [:create, :read], ProjectQuestion do |project_question|
can? :read, project_question.project
end请注意,在检查能力之前,您必须为新的project_id分配一个project_question。
所以在您的控制器/视图中,您不能这样做。
can? :create, ProjectQuestion.new因为它永远都是假的。你要做的是:
can? :create, some_project.project_questions.newhttps://stackoverflow.com/questions/32431303
复制相似问题