簡體   English   中英

Rails 4-Cancancan-定義能力

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM