2009-10-19 42 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