2012-11-03 68 views

回答

2

CanCan到目前爲止是您使用ruby角色的最佳解決方案,我建議您查看Tony's Usage of Devise/CanCan以創建一個基於角色的系統。我花了一點時間才弄清楚如何解決這個問題,但現在它對我來說是個奇蹟。

而第二種方式是

我會推薦一個角色模型。在這種情況下,用戶將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 

希望這會有所幫助。

+0

Dipak,你的鏈接到託尼的使用Devise/CanCan鏈接到Rails指南。 –

0

對於使用Rails的5DeviseCanCanCan(慘慘看起來並不像它不再支持)更新的解決方案,檢查了這一點:

  1. RAILS 5: USER ACCOUNTS WITH 3 TYPES OF ROLES – DEVISE, RAILS_ADMIN, CANCANCAN

這裏是一個備用使用Rails的解決方案Pundithas_secure_password

  1. Implementing Roles and Permissions in Ruby on Rails

使用CanCanCan的優點是,它從用戶角色權限去耦,而很多人找權威人士更容易地工作,創傷小。兩者都很好。