是否可以通过引用另一种能力来定义CanCanCan能力?
例如,我有一个名为Project and Project Question的模型。
我希望允许一类用户阅读项目,然后如果他们可以阅读项目,那么他们就可以创建项目问题。
我已将用户阅读项目的能力定义为:
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的另一个问题的重复,cancancan通过引用db中的属性来寻求表达能力的语法帮助。
答案 0 :(得分:0)
假设有has_many / belongs_to类型的assciation你可以很容易地这样做:
can? :create, ProjectQuestion.new
请注意,在检查能力之前,您必须将project_id分配给新的project_question。
所以在你的控制器/视图中你无法做到
can? :create, some_project.project_questions.new
因为它总是会返回false。你必须这样做:
yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);