我可以做到。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
如果你只想摆脱所有这些角色,那么应该这样做:(基本上是remove_role
所做的,但没有额外的过滤器或回调(
roles
.where(
resource_type: 'Organization',
resource_id: organization.id)
.delete_all
如果你想让它表现得更像remove_role
,那么这可能是一个更好的方法:
self.class.adapter.remove(
self,
Organization
.find_roles(:any, organization),
organization)
Rolify::Adapter::RoleAdapter