首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4-癌变定义能力

Rails 4-癌变定义能力
EN

Stack Overflow用户
提问于 2015-09-07 04:52:46
回答 1查看 225关注 0票数 0

是否可以通过引用另一个能力来定义CanCanCan能力?

例如,我有一个叫做ProjectandProject问询的模型。

我希望允许一类用户阅读项目,然后如果他们能够读取项目,那么他们就可以创建项目问题。

我已将用户阅读项目的能力定义为:

代码语言:javascript
复制
can :read, Project, 
      {:active => true, 
       :closed => false,
       :sweep => { :disclosure => { :allusers => true }}
      } 

现在,我想定义一种创建项目问题的能力。我想知道你是否可以这样说:

代码语言:javascript
复制
if can :read, Project, can :create, ProjectQuestion

我也尝试过:

代码语言:javascript
复制
can [:create, :read], ProjectQuestion do |pq3|
        if can :read Project 
        end

是否可以参照另一种能力来定义一种能力?

PS:这不是我关于cancancan的另一个问题的副本,后者要求语法上的帮助,通过引用db中的属性来表达能力。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-07 08:58:08

假设有has/ can __类型的排序,您可以很容易地这样做:

代码语言:javascript
复制
can [:create, :read], ProjectQuestion do |project_question|
  can? :read, project_question.project
end

请注意,在检查能力之前,您必须为新的project_id分配一个project_question。

所以在您的控制器/视图中,您不能这样做。

代码语言:javascript
复制
can? :create, ProjectQuestion.new

因为它永远都是假的。你要做的是:

代码语言:javascript
复制
can? :create, some_project.project_questions.new
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32431303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档