分配角色以设计用户注册 Rolify

Assign roles to devise user on registration with Rolify

我在一个需要管理员和普通用户的系统上工作,我正在尝试使用 devise、rolify 和 cancancan.My 问题来实现系统,我想为第一个签名的用户添加管理员角色在系统上,但到目前为止我只能通过 rails 控制台实现这一点,我也覆盖了注册控制器。以下是我到目前为止所尝试的。

User.rb

class User < ApplicationRecord
resourcify
rolify
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
end

role.rb

class Role < ApplicationRecord

has_and_belongs_to_many :users, :join_table => :users_roles

belongs_to :resource,
       :polymorphic => true,
       :optional => true

validates :resource_type,
      :inclusion => { :in => Rolify.resource_types },
      :allow_nil => true

scopify
end

注册控制器

   class RegistrationsController <   Devise::RegistrationsController

   def create
   super
   @number_of_users = User.all.count
    if @number_of_users == 0
    resource.add_role :admin
  end
  end


  end

我能够让它工作,对于那些将来可能会遇到此类问题的人,这是我的解决方案

注册控制器

   after_action :assign_role, only:[:create]
    def assign_role
      @number_of_users = User.all.count
      if @number_of_users == 1 
        current_user.add_role :admin
     end
    end

我喜欢公认的解决方案,但为了让事情井井有条,我会像这样将它放在用户模型中:

after_create :assign_role
def assign_role
  if User.all.count == 1 
    User.first.add_role :admin
  end
end