Cancancan
特定のコンテキストの権限のみを定義できます。このコンテキストは、一部ではないユーザー ロールである可能性があるcancancan
ため、ロールは自分で定義する必要があります。
ユーザーの役割を定義するにはさまざまな方法があります。
Role
モデルとして、
- Rails列挙型、
- ここで提案されているように、
User
モデルの文字列属性として。
それはすべてユースケースに依存します。能力を定義する方法の例は、ここにあります。あなたの場合、次のようになります。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.reviewer? #Just a logged user
can :manage, Comment, { owner_id: user.id }
elsif user.admin?
can :manage, :all
end
end
end
class User < ActiveRecord::Base
enum role: [ :reviewer, :admin ]
end