2012-07-15 58 views
0

我正在构建一个内部项目管理软件(ala Basecamp),它将用于我们的内部和外部使用。尽管如此,我正努力寻找执行高级权限的最佳策略。Rails 3:基于项目的权限

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

我正在使用Cancan进行总体权限,但这不似乎能够以我需要的方式进行分配。我已经看过了role_model,cantango等。但无法找到与我想要做的事情完全相符的用例,尽管它看起来很标准。

这里有什么见解?

谢谢!

编辑:

它已经明显发生,我只是做一个权限表(如下所述:How to create a basic User Permissions per project association?)。我与a斗争)这是最好的方式吗?更重要的是b)在应用程序中检查权限并仅显示允许的数据的最佳方式是什么?

回答

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