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