删除特定资源的所有用户角色的最干净或最惯用的方法是什么?



我可以做到。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

最新更新