Puedo hacer esto. ¿Hay una forma más idiomática o algo compatible directamente con la API?
transaction do Organization.find_roles(:any, organization).where(resource_id: organization.id).pluck(:name).each |role_name| remove_role(role_name, organization) end add_role('new_role', organization) endSi solo desea deshacerse de todos esos roles, esto debería hacerlo: (básicamente lo que hace remove_role pero sin filtros adicionales o devoluciones de llamada)
roles .where( resource_type: 'Organization', resource_id: organization.id) .delete_all Si desea que actúe más como remove_role , esta podría ser una mejor manera de hacerlo:
self.class.adapter.remove( self, Organization .find_roles(:any, organization), organization)