Rolify 并获取对资源具有特定访问权限的用户列表
Rolify and getting a list of User with specific access to a resource
我有两个模型 Organization
和 Users
,我正在使用 Rolify 进行连接。
用户有角色,组织是资源。
这很好用,但我的问题是试图获取特定资源的用户列表。我想获得对该资源具有任何角色的所有用户的列表(我不关心 Class 级别的角色,如通用管理员等)
我试过做下面这样的事情,但这很糟糕,而且它仍然是 returns class 级别管理员的列表(那些有管理员但实际上不在任何特定资源上的)。
class Organization < ActiveRecord::Base
resourcify
def users
# this is terrible and still doesn't work right.
User.with_role(:admin, self) + User.with_role(:press, self)
end
end
class User < ActiveRecord::Base
rolify
def organizations
Organization.with_roles(Role.role_names, self).uniq
end
end
有什么想法吗?
试试这个。
has_many :users, through: :roles, class_name: 'User', source: :users
这应该只添加那些使用角色模型的人(跳过 class 上的那些人)。你也可以尝试更明确的条件见这个 issue/PR:
添加此答案以便对其他人有所帮助。
class Organization < ActiveRecord::Base
resourcify
def users
User.joins(:roles).where(
roles: { resource_type: 'Organization', resource_id: self.id }
)
end
end
这是通过内部加入角色 table 过滤用户,其中角色条目与特定组织对象相关。
我有两个模型 Organization
和 Users
,我正在使用 Rolify 进行连接。
用户有角色,组织是资源。
这很好用,但我的问题是试图获取特定资源的用户列表。我想获得对该资源具有任何角色的所有用户的列表(我不关心 Class 级别的角色,如通用管理员等)
我试过做下面这样的事情,但这很糟糕,而且它仍然是 returns class 级别管理员的列表(那些有管理员但实际上不在任何特定资源上的)。
class Organization < ActiveRecord::Base
resourcify
def users
# this is terrible and still doesn't work right.
User.with_role(:admin, self) + User.with_role(:press, self)
end
end
class User < ActiveRecord::Base
rolify
def organizations
Organization.with_roles(Role.role_names, self).uniq
end
end
有什么想法吗?
试试这个。
has_many :users, through: :roles, class_name: 'User', source: :users
这应该只添加那些使用角色模型的人(跳过 class 上的那些人)。你也可以尝试更明确的条件见这个 issue/PR:
添加此答案以便对其他人有所帮助。
class Organization < ActiveRecord::Base
resourcify
def users
User.joins(:roles).where(
roles: { resource_type: 'Organization', resource_id: self.id }
)
end
end
这是通过内部加入角色 table 过滤用户,其中角色条目与特定组织对象相关。