2016-03-10 29 views
-1

我正在尋找最佳方法,在rails 4.2上使用不同的屬性和權限創建和管理用戶角色。在rails中管理用戶角色(不同的屬性,權限等)

我不想創建一個表中的每個用戶的角色,我有一些枚舉溶液或一些寶石一樣康康舞rolify,但我想知道什麼是提高性能,尊重的最好方式協議,並編寫強大的代碼和架構。

任何人都可以幫到我嗎?

+0

'cancan'是管理用戶角色的最佳方式。請參閱此鏈接上的實現http://railscasts.com/episodes/192-authorization-with-cancan?view=asciicast –

+0

U應該使用cancan gem(https ://github.com/ryanb/cancan) –

+0

爲什麼康康寶石比rolify還是枚舉? – T1djani

回答

0

這不是Cancancan或Rolify或枚舉,但Rolify + Cancancan枚舉+ Cancancan

授權寶石,如Cancancan或Pundit(我更喜歡)用於根據用戶的角色管理用戶可以執行的操作。所以角色和授權並不反對,它們通常是相輔相成的。

Rolify + Pundit是一個不錯的解決方案,它可以讓您的用戶擁有多個角色。

對於基於單一角色的授權,Enum更直接。它特別適用於(但不僅限於)具有角色層次結構的應用程序,如成員,主持人,管理員。

爲了獲得在5分鐘內根據枚舉的角色,首先添加一個角色欄用戶:

class AddRoleToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :role, :integer, default: 0 #The default role will be the one set at 0 in user.rb 
    end 
end 

然後,在user.rb定義角色

enum role: { buyer: 0, seller: 1, admin: 2 }

這將直接允許你做一些像current_user.admin?之類的東西,而不需要編寫更多的代碼,這是非常方便和乾淨的。