我正在尋找最佳方法,在rails 4.2上使用不同的屬性和權限創建和管理用戶角色。在rails中管理用戶角色(不同的屬性,權限等)
我不想創建一個表中的每個用戶的角色,我有一些枚舉溶液或一些寶石一樣康康舞或rolify,但我想知道什麼是提高性能,尊重的最好方式協議,並編寫強大的代碼和架構。
任何人都可以幫到我嗎?
我正在尋找最佳方法,在rails 4.2上使用不同的屬性和權限創建和管理用戶角色。在rails中管理用戶角色(不同的屬性,權限等)
我不想創建一個表中的每個用戶的角色,我有一些枚舉溶液或一些寶石一樣康康舞或rolify,但我想知道什麼是提高性能,尊重的最好方式協議,並編寫強大的代碼和架構。
任何人都可以幫到我嗎?
這不是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?
之類的東西,而不需要編寫更多的代碼,這是非常方便和乾淨的。
'cancan'是管理用戶角色的最佳方式。請參閱此鏈接上的實現http://railscasts.com/episodes/192-authorization-with-cancan?view=asciicast –
U應該使用cancan gem(https ://github.com/ryanb/cancan) –
爲什麼康康寶石比rolify還是枚舉? – T1djani