2009-10-19 76 views
0

好了,所以我在地方和運作都acl9,和我的應用程序結構迄今:建議的結構和用戶訪問

地區(有)位置(其中有銷售)。銷售並不重要,基本上只是顯示在每個地點的帖子。

我也有用戶,與acl9集成的用戶可以根據角色進行限制和允許。

我需要做的是創建公司併爲給定公司創建用戶,只允許訪問該公司內的區域和位置。然後,我需要每個公司都可以創建的用戶,他們只能訪問他們有權訪問的位置。

我的問題是,我不知道如何去限制一個創建的用戶動態的某個部分。也就是說,管理員的界面。我可以想象一些方法,但尋找最好的建議。

回答

1

你可以覆蓋「has_role?」方法給用戶。

class User < ActiveRecord::Base 
    def has_role?(role_name, obj=nil) 
     # Your code 
    end 
end 

如果對象類型是「區域」或「位置」,您檢查用戶的公司,並允許訪問,如果區域是合適的。 否則,你稱之爲「超級」。讓ACL9檢索它的默認值。

它會給你這樣的事情:

class User < ActiveRecord::Base 
    def has_role?(role_name, obj=nil) 
     super unless obj.class == Region or obj.class == Location 
     return company.region == obj if obj.class == Region 
     return company.location == obj if obj.class == Location 
    end 
end 

這只是一個建議,實施後。其中幾乎是無數。我從來沒有說過這是最好的。

+0

好的我有一個問題,obj.class引用了什麼,到底是什麼?我是否需要爲模型中定義的每個角色創建一個類? – 2009-10-25 21:34:29

+0

擁有兩種「用戶」模型是不是一個好主意?似乎管理所有與管理員的公司應建立不同於其他用戶的水平...... – 2009-10-25 21:41:58