将默认角色添加到 Devise 用户模型

3
在尝试为我的项目添加基于角色的身份验证(使用CanCan和Devise)时,我发现有两种保存角色的方法:第一种是“Has and Belongs_to”方式,第二种是在用户表中新建一个字段来保存角色。
那么问题来了,如何在第一种方式中定义默认用户角色?在第二种方式中应该选择哪种方式来定义默认角色(在迁移中设置默认角色还是编辑Devise的用户控制器)?
此外,我应该使用这种方法还是最好使用gem呢?
P.S. 我已经阅读了Tony Amoyal的教程,但没有找到答案。
4个回答

9
如果我正确理解了问题,以下是对我有效的操作:Ruby on rails, cancan and default role assignment
只需在/models/user.rb中添加以下内容即可在注册时分配默认角色:
after_create :default_role

  private
  def default_role
    self.roles << Role.where(:name => 'User').first
  end

2
这种情况在《Rails反模式》一书中有所描述:http://railsantipatterns.com/ 简短的答案是:使用users表中的字段,使用迁移设置默认角色。这种方式要简单得多。您不应该仅仅因为它可能更适合未来的需求而使用复杂的解决方案。

1
你可以在user.rb中执行以下操作:
after_initialize :set_default_role

private

def set_default_role
  self.role ||= :user
end

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接