Rails 上 Ruby 的 Rolify gem 的多重权限
Multi-permissions with Rolify gem for Ruby on Rails
我对 Rails 上 Ruby 的 Rolify Gem 有疑问。
我想为特定组织创建权限,例如,
我拥有组织 1 (Organization.find(1)
) 的管理员权限
我拥有组织 2 的用户权限 (Organization.find(2)
)
我拥有组织 3 (Organization.find(3)
) 的版主权限
Organizations 由 Client 分隔,我可以在许多不同的 Organizations 中拥有许多不同的权限。
例如,我尝试在日志 user.add_role "full_admin", Organization.find(1)
中使用它,但它没有我希望的功能。
在数据库中,Rolify armazened 的查询如下,
2.1.5 :111 > user.add_role "full_admin", Organization.find(1)
Organization Load (1.1ms) SELECT `organizations`.* FROM `organizations` WHERE `organizations`.`id` = 1 LIMIT 1
Role Load (1.2ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`name` = 'full_admin' AND `roles`.`resource_type` = 'Organization' AND `roles`.`resource_id` = 1 LIMIT 1
Role Exists (1.0ms) SELECT 1 AS one FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND `roles`.`id` = 7 LIMIT 1
=> #<Role id: 7, name: "full_admin", resource_id: 1, resource_type: "Organization", created_at: "2017-01-06 19:58:31", updated_at: "2017-01-06 19:58:31">
如果有人能帮助我,我将不胜感激,谢谢!
Rolify 允许您限定角色,如以下代码所示。我从 Rolify wiki 复制了它。
user = User.find(2)
user.add_role :moderator, Forum.first # sets a role scoped to a resource instance
user.has_role? :moderator, Forum.first
=> true
user.has_role? :moderator, Forum.last
=> false
从上面的代码可以看出,您可以为不同的组织设置不同的角色。您可以考虑使用像“Pundit”这样的库来根据角色设置权限。
我对 Rails 上 Ruby 的 Rolify Gem 有疑问。
我想为特定组织创建权限,例如,
我拥有组织 1 (Organization.find(1)
) 的管理员权限
我拥有组织 2 的用户权限 (Organization.find(2)
)
我拥有组织 3 (Organization.find(3)
) 的版主权限
Organizations 由 Client 分隔,我可以在许多不同的 Organizations 中拥有许多不同的权限。
例如,我尝试在日志 user.add_role "full_admin", Organization.find(1)
中使用它,但它没有我希望的功能。
在数据库中,Rolify armazened 的查询如下,
2.1.5 :111 > user.add_role "full_admin", Organization.find(1)
Organization Load (1.1ms) SELECT `organizations`.* FROM `organizations` WHERE `organizations`.`id` = 1 LIMIT 1
Role Load (1.2ms) SELECT `roles`.* FROM `roles` WHERE `roles`.`name` = 'full_admin' AND `roles`.`resource_type` = 'Organization' AND `roles`.`resource_id` = 1 LIMIT 1
Role Exists (1.0ms) SELECT 1 AS one FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND `roles`.`id` = 7 LIMIT 1
=> #<Role id: 7, name: "full_admin", resource_id: 1, resource_type: "Organization", created_at: "2017-01-06 19:58:31", updated_at: "2017-01-06 19:58:31">
如果有人能帮助我,我将不胜感激,谢谢!
Rolify 允许您限定角色,如以下代码所示。我从 Rolify wiki 复制了它。
user = User.find(2)
user.add_role :moderator, Forum.first # sets a role scoped to a resource instance
user.has_role? :moderator, Forum.first
=> true
user.has_role? :moderator, Forum.last
=> false
从上面的代码可以看出,您可以为不同的组织设置不同的角色。您可以考虑使用像“Pundit”这样的库来根据角色设置权限。