簡體   English   中英

獲取所有管理員CanCanCan

[英]Get all admins CanCanCan

如何按角色對用戶進行定位? 我想將所有具有角色的用戶:admin加入用戶表。

用戶的字段由CanCanCan gem生成,這是我的user.rb

# == Schema Information
#
# Table name: users
#
...
#  roles_mask             :integer
...

class User < ApplicationRecord
  has_many :glucose_levels
  has_many :foods
  attr_accessor :current_password
  # has_secure_password

  ROLES = %i[patient, doctor]

  def roles=(roles)
    roles = [*roles].map { |r| r.to_sym }
    self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
  end

  def roles
    ROLES.reject do |r|
      ((roles_mask.to_i || 0) & 2**ROLES.index(r)).zero?
    end
  end

  def has_role?(role)
    roles.include?(role)
  end
  ...
end

它與cancancan無關,您可以只假設role是用戶表中字段的名稱,就可以執行User.where(role: 'admin')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM