2011-01-27 9 views
2

私のモデルでは、かなりの数のモデルItemのサブクラスがあります。特定のロールに対して、Itemの権限が明示的にリストされずにItemのすべてのサブクラスに適用されるように指定できるようにしたいと思います。私が新しいItemサブクラスを追加すると、私はパーミッションを更新するのを忘れたくはありません。どうすればこれを達成できますか?例えばCanCanを使用する場合、特定のクラスのすべてのサブクラスに対してどのようにパーミッションを指定できますか?

、この権限

if user.role? :customer_service 
    can :read, Item 
end 

は、顧客サービス担当者は、内閣<項目内閣の詳細を読むことができません。

答えて

0

私はあなたがcan宣言にブロックを送ることによってこれを行うことができると思います。おそらくこのように:

if user.role? :cutomer_service 
    can do |action, subject_class, subject| 
    # Checks if action is :read and if subject_class is a subclass of Item 
    action == :read && subject_class < Item 
    end 
end 

私はこれをテストしていませんが、うまくいくはずです。

関連する問題