我知道如何創建一個管理員角色/用戶:https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleRails的設計 - 管理員角色,型號VS屬性
什麼我不知道,雖然是如果有任何的優勢或劣勢,這兩個選項之間進行選擇時要考慮他們。任何人都可以提供這方面的任何見解嗎?
我知道如何創建一個管理員角色/用戶:https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-roleRails的設計 - 管理員角色,型號VS屬性
什麼我不知道,雖然是如果有任何的優勢或劣勢,這兩個選項之間進行選擇時要考慮他們。任何人都可以提供這方面的任何見解嗎?
讓我把水弄糊了一下。我更喜歡通過Role
表和連接表UserRole
。這樣我可以定義多個角色,而無需向db添加其他列/表。
class User
has_many :user_roles
has_many :roles, :through => :user_roles
def role?(role)
role_names.include? role
end
def role_names
@role_names ||= self.roles.map(&:name)
end
def role=(role)
self.roles << Role.find_or_create_by_name(role)
end
end
class UserRole
# integer: user_id, integer: role_id
belongs_to :user
belongs_to :role
end
class Role
# string: name
has_many :user_roles
has_many :users, :through => :user_roles
end
這實際上取決於你想要對你的管理員角色做什麼。我想說的第一個選擇是安全的,因爲管理角色本身就是一個獨特的模型。
第二個選項很簡單,可以幫助您最輕鬆地完成任務。但是,如果您的用戶找出布爾變量並設置它,則任何用戶都可以成爲管理員並訪問您不希望他們訪問的區域。
我喜歡這個概念,因爲它增加了很多靈活性,如果需要的話。相反,當然,它是增加了複雜性... –
因此,理論上,當使用這種方法不兼容的角色可以結合,我是對嗎? – DreamWalker