Rails 4 - cancancan - 定义能力
Rails 4 - cancancan - defining abilities
是否可以通过引用另一个能力来定义 CanCanCan 能力?
例如,我有名为项目和项目问题的模型。
我想允许 class 用户阅读项目,然后如果他们可以阅读项目,那么他们可以创建项目问题。
我将用户阅读项目的权限定义为:
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 的另一个问题的重复,它在通过引用数据库中的属性来表达能力方面寻求语法方面的帮助。
假设存在 has_many/belongs_to 类型的关联,您可以通过以下方式轻松完成:
can [:create, :read], ProjectQuestion do |project_question|
can? :read, project_question.project
end
请注意,在检查能力之前,您必须将 project_id 分配给新的 project_question。
所以在你的controller/views你不能做
can? :create, ProjectQuestion.new
因为它总是 return 错误。您将需要做的是:
can? :create, some_project.project_questions.new
是否可以通过引用另一个能力来定义 CanCanCan 能力?
例如,我有名为项目和项目问题的模型。
我想允许 class 用户阅读项目,然后如果他们可以阅读项目,那么他们可以创建项目问题。
我将用户阅读项目的权限定义为:
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 的另一个问题的重复,它在通过引用数据库中的属性来表达能力方面寻求语法方面的帮助。
假设存在 has_many/belongs_to 类型的关联,您可以通过以下方式轻松完成:
can [:create, :read], ProjectQuestion do |project_question|
can? :read, project_question.project
end
请注意,在检查能力之前,您必须将 project_id 分配给新的 project_question。
所以在你的controller/views你不能做
can? :create, ProjectQuestion.new
因为它总是 return 错误。您将需要做的是:
can? :create, some_project.project_questions.new