获取所有管理员CanCanCan

时间:2018-01-30 00:30:52

标签: ruby-on-rails cancancan

如何按角色执行用户所在位置? 我想在users表中为所有用户提供角色::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

1 个答案:

答案 0 :(得分:0)

它与cancancan无关,你可以做一个User.where(role: 'admin'),假设role是用户表中字段的名称。