2013-03-29 34 views
0

以下爲條件如何在cancan中定義能力模型以允許用戶編輯具有關係的值?

我有users誰屬於一個work和類似category屬於一個work

現在我希望該具體工作的用戶0123'屬於該工作的類別。

如何在ability型號中指定此項?

編輯:

include CanCan::Ability 

def initialize(user) 

user ||= User.new # guest user 

user.roles.each do |role| 

role.name 

if role.name == "admin" 

    can :read, User 

    can :create, User 

    can :edit, User 

    can :destroy, User 

end 

if role.name == "staff" 

     can :read, :all 

     can :create, :all 

     cannot :edit, Category 

     can :update, :all 

     can :destroy, :all 

     end 

    if role.name == "others" 

      can :read, :all 

    end 

end 

end 

end 

回答

0

在你逝去的只是用戶的能力類。您還需要通過類別,以便做,

can :manage, Category if user.work_id == category.work_id 

或者你將不得不遍歷像這樣(我會不推薦),

can :manage, Category if user.work_id == user.work.categories.first.work_id 

此鏈接顯示瞭如何發送多個params對你的能力課。

https://github.com/ryanb/cancan/wiki/Accessing-Request-Data

+0

我已經發布了我的能力模型,請告訴我怎麼也傳類別中的能力。 – logesh

相關問題