3

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

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

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

PS 我已经阅读了 Tony Amoyal 的教程,但没有找到答案。

4

4 回答 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
于 2012-10-17T02:50:28.470 回答
2

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

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

于 2012-08-16T18:04:00.443 回答
1

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

after_initialize :set_default_role

private

def set_default_role
  self.role ||= :user
end
于 2016-08-17T01:57:47.820 回答
0

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

于 2012-12-30T09:29:57.617 回答