0

declarative_authorization gemを使用して、プロジェクト管理者とプロジェクト コラボレーターの役割を作成しようとしています。

ユーザーとプロジェクトのマッピングを保持する「コラボレーター」というテーブルがあります。

モデル:

計画

has_many :collaborators  
has_many :users, :through => :collaborators  

ユーザー

has_many :collaborators
has_many :projects, :through => :collaborators

協力者

belongs_to :user
belongs_to :project

project_admin および project_collaborator ロールの DSL を定義するためのガイダンスが必要です。私は次のことを思いつきました:

authorization do
  role :guest do
    has_permission_on :users, :to => [:read]
  end

  role :project_admin do
    has_permission_on :projects, :to => :manage do
      if_attribute :project_admin => true
    end
  end

  role :admin do
    has_permission_on :users, :to => [:delete]
  end
end

privileges do
  privilege :manage do
    includes :create, :read, :update, :delete
  end
end

提案/ヘルプに感謝します。
ありがとう!

4

1 に答える 1