添加默认角色以设计用户模型

时间:2012-08-16 17:37:11

标签: ruby-on-rails ruby devise roles cancan

在尝试将基于角色的身份验证(使用CanCan和Devise)添加到我的项目时,我发现有两种方法可以保存角色:第一种方法是“Has and Belongs_to”方式,第二种方法只是保存角色用户表中的新字段。

所以,问题是,如何以第一种方式定义聋人用户角色?我应该选择在第二种方式中定义聋人角色(在迁移中设置默认角色或编辑Devise的用户控制器?)

另外,我应该使用这种方法还是更好地使用gem呢?

P.S。我已经阅读过Tony Amoyal的教程,但没有在那里找到答案。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

这种情况在Rails AntiPatterns书中描述:http://railsantipatterns.com/

简短回答是:在users表中使用字段,使用迁移设置默认角色。这种方式更简单。您不应该仅仅因为它可能更适合您未来的需求而使用复杂的解决方案。

答案 2 :(得分:1)

您可以在user.rb中执行以下操作:

after_initialize :set_default_role

private

def set_default_role
  self.role ||= :user
end

答案 3 :(得分:0)

使用此gem可以实现非常简单的用户角色解决方案:https://github.com/platform45/easy_roles