【发布时间】:2018-01-30 00:30:51
【问题描述】:
如何按角色确定用户的位置?
我想将所有具有以下角色的用户::admin 带到 users 表中。
用户的字段由 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
【问题讨论】: