2012-07-15 61 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