'What's the cleanest or most idiomatic way to remove all of a user's roles for a particular resource?
I can do this. Is there a more idiomatic way or something directly supported by the 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)
end
Solution 1:[1]
If you just want to get rid of all of those roles then this should do it: (basically what remove_role does but without additional filters or callbacks)
roles
.where(
resource_type: 'Organization',
resource_id: organization.id)
.delete_all
If you want it to act more like remove_role then this might be a better way to go:
self.class.adapter.remove(
self,
Organization
.find_roles(:any, organization),
organization)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
