0

我正在构建一个内部项目管理软件(ala Basecamp),供我们内部和外部使用。不过,我正在努力寻找执行高级权限的最佳策略。

像 Basecamp 一样,会有很多客户,他们下有很多项目。我希望能够为每个用户分配不同的查看权限给每个客户和项目,这将决定谁可以看到什么。基本上,管理员应该能够说“这个用户可以看到这 4 个项目”,然后当该用户登录时,他们会看到这 4 个项目。

我正在使用 Cancan 获得整体权限,但这似乎无法以我需要的方式分配。我看过 role_model、cantango 等。但找不到一个完全符合我想要做的用例,即使它看起来很标准。

这里有什么见解吗?

谢谢!

编辑:

我显然已经想到只做一个权限表(这里描述:如何为每个项目关联创建一个基本的用户权限?)。我挣扎a)这是最好的方法吗?更重要的是 b)在应用程序中检查权限并仅显示允许的数据的最佳方法是什么?

4

1 回答 1

0

如何创建额外的模型权限,它将为每个项目的用户保留权限?当然你也可以使用 can_can,但是这种方法很容易分析并且解决方案会专门针对问题。

IE。

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 回答