【问题标题】:Adding default role to Devise user model将默认角色添加到设计用户模型
【发布时间】:2012-08-13 02:56:57
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如果我正确理解了这个问题,这对我有用: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 AntiPatterns 书中描述的这种情况:http://railsantipatterns.com/

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

      【讨论】:

        【解决方案3】:

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

        after_initialize :set_default_role
        
        private
        
        def set_default_role
          self.role ||= :user
        end
        

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-11-19
            • 1970-01-01
            • 1970-01-01
            • 2016-09-03
            • 1970-01-01
            • 1970-01-01
            • 2021-04-09
            • 1970-01-01
            相关资源
            最近更新 更多