如何按角色执行用户所在位置?
我想在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
答案 0 :(得分:0)
它与cancancan无关,你可以做一个User.where(role: 'admin')
,假设role
是用户表中字段的名称。