2011-06-13 94 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 

希望這會有所幫助。