好的,所以我有acl9到位并正常运行,到目前为止我的应用程序结构:
区域(有)地点(有销售)。销售并不重要,基本上只是每个位置都会显示的帖子。
我也有用户,可以根据角色限制和允许与acl9集成。
我需要做的是创建公司并为给定公司创建用户,只允许访问该公司内的区域和位置。然后,我将需要每个公司都可以创建的用户,这些用户只能访问他们可以访问的位置。
我的问题是,我不确定如何动态地将创建的用户限制到某个部分。也就是说,管理员的界面。我可以想象一些方法,但寻找最佳方法的建议。
答案 0 :(得分: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
之后只有一个实施建议。它们几乎无穷无尽。我从来没有说过这是最好的。