[英]Rails 4 - cancancan - defining abilities
是否可以通過引用另一個能力來定義CanCanCan能力?
例如,我有稱為“項目”和“項目問題”的模型。
我想允許一類用戶閱讀項目,然后如果他們可以閱讀項目,那么他們可以創建項目問題。
我將用戶閱讀項目的能力定義為:
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。
因此,在您的控制器/視圖中您無法執行
can? :create, ProjectQuestion.new
因為它將始終返回false。 您將需要執行以下操作:
can? :create, some_project.project_questions.new
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.