0

内部および外部で使用する内部プロジェクト管理ソフトウェア(ala Basecamp)を構築しています。しかし、高度な権限を実行するための最良の戦略を見つけるのに苦労しています。

Basecampと同様に、多数のクライアントが存在し、その下に多数のプロジェクトがあります。各ユーザーに異なる表示権限を各クライアントとプロジェクトに割り当てて、誰が何を表示できるかを決定できるようにしたいと思います。基本的に、管理者は「このユーザーはこれらの4つのプロジェクトを見ることができます」と言うことができ、そのユーザーがログインすると、それらの4つのプロジェクトが表示されます。

全体的な権限にCancanを使用していますが、必要な方法で割り当てることができないようです。role_model、cantangoなどを見てきました。しかし、それはかなり標準的なように見えますが、私がやろうとしていることにぴったり合うユースケースを見つけることができません。

ここに何か洞察はありますか?

ありがとう!

編集:

パーミッションテーブルを作成するだけでよいのは明らかです(ここで説明:プロジェクトの関連付けごとに基本的なユーザーパーミッションを作成する方法は?)。私はa)に苦労していますこれが最善の方法ですか?さらに重要なのは、b)アプリの権限を確認し、許可されたデータのみを表示するための最良の方法は何ですか?

4

1 に答える 1

0

各プロジェクトのユーザーの権限を保持する追加のモデル権限を作成するのはどうですか? もちろん can_can を使用できますが、このアプローチは分析が簡単になり、ソリューションは問題専用になります。

すなわち。

class Permission < ActiveRecord::Base
  TYPES = {
    :user=>1,
    :manager=>10,
    :admin=>100
  }
  belongs_to :user
  belongs_to :project
  validates :permission_type,
            :inclusion=>{:in=>Permission::TYPES.values},
            :presence=>true
end

class User < ActiveRecord::Base
  has_many :permissions
  has_many :projects, :through=>:permissions
  ...
end

class Project < ActiveRecord::Base
  has_many :permissions
  has_many :users, :through=>:permissions
end
于 2012-07-15T22:21:14.357 に答える