Я использую cancan в качестве механизма авторизации.
У меня уже есть роли в пользователе:
ROLES = %w[admin normal author corp]
У меня также есть методы для добавления и проверки ролей:
#cancan
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def roles
ROLES.reject do |r|
((roles_mask || 0) & 2**ROLES.index(r)).zero?
end
end
def is?(role)
roles.include?(role.to_s)
end
И у меня есть # roles_mask :integer
в модели User.
Однако я хочу иметь after_save :add_normal_role
, который назначает обычную роль пользователю.
По сути, яЯ не могу (не знаю), как назначать роли каждому пользователю.
Это то, что у меня есть, и это не работает:
private
def add_normal_role
self.roles=(ROLES[1])
end
Спасибо