2011-06-13 86 views
2

我想设计一个基于角色的系统,比如Basecamp。用户可以是品牌的编辑,也可以是另一品牌的工作人员。我正在使用devise + cancan。我怎样才能为这种情况设计一个数据库?谢谢。rails中的多个角色

回答

0

acl_system2。它是一个旧的插件,但检出其自述文件,看看它是否有用。

2

我会推荐一个榜样。在这种情况下,用户将have_and_belong_to_many :roles,而角色将have_and_belong_to_many :users。这创建了角色和用户之间的多对多关系。有关关联的更多信息,请参阅this RailsGuide。

在您的康康舞ability.rb文件,你可以做这样的事情(我就在你的设置猜测):

can :manage, Brand do |brand| 
    user.has_role?("brand_manager") && user.brands.include?(brand) 
end 

在你user.rb文件,它是有帮助的写是这样的:

def has_role?(name) 
    role = Role.find_by_name(name) 
    (self.roles.include?(role)) ? (return true) : (return false) 
end 

希望这会有所帮助。