rails中的多个角色

时间:2011-06-13 02:22:18

标签: ruby-on-rails devise cancan

我想设计一个像Basecamp这样的基于角色的系统。用户可以是品牌的编辑者,也可以是其他品牌的工作者。我正在使用devise + cancan。我如何为这种情况设计数据库?感谢。

2 个答案:

答案 0 :(得分:2)

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

在您的CanCan 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

希望这有帮助。

答案 1 :(得分:0)

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