7

我知道如何创建管理员角色/用户:https ://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-role

我想知道的是,在决定这两个选项时是否有任何优点或缺点需要考虑。任何人都可以对此提供任何见解吗?

4

2 回答 2

6

让我把水搅混一下。我更喜欢通过Roletable 和 join table来实现这一点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
于 2013-11-04T10:56:17.063 回答
4

这实际上取决于您希望使用管理员角色做什么。我想说第一个选项有点安全,因为管理员角色本身就是一个独特的模型。

第二个选项很简单,可以帮助您以最少的努力开始。但是,如果您的用户找出布尔变量和设置它的方法,任何用户都可以成为管理员并访问您不希望他们访问的区域。

于 2013-11-04T10:36:05.043 回答