【发布时间】:2019-11-21 08:18:02
【问题描述】:
我正在 Rails 中开发一个 Web 应用程序,它需要一个用户拥有两个角色,他只需单击一下即可在两个角色之间切换,就像 Fiverr 一样。我只想知道这样做的最佳方法和宝石。我已经经历了“rolify”和“cancancan”,但还没有弄清楚如何去做。任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails authorization cancancan rolify
我正在 Rails 中开发一个 Web 应用程序,它需要一个用户拥有两个角色,他只需单击一下即可在两个角色之间切换,就像 Fiverr 一样。我只想知道这样做的最佳方法和宝石。我已经经历了“rolify”和“cancancan”,但还没有弄清楚如何去做。任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails authorization cancancan rolify
我建议再试一次“Rolify”和“Cancancan”。因为在Ability 文件中定义了权限之后,您就可以检查当前用户是否在视图中具有类似can?(:read, ModelName) 的权限。在其他区域,您可以使用user.has_role?(:admin) 或您想要命名的角色来检查角色。
如果您无法让它们工作,您可以使用枚举来创建/检查角色。
class User < ApplicationRecord
enum role: %i[admin manager user]
end
然后您可以检查正确的枚举以查看某些内容,即:user.admin?
您还可以通过为此创建控制器操作并调用 user.admin! 或您想要的任何枚举角色来相当轻松地更改“角色”。
【讨论】:
#current_ability(cancancan 提供的方法)限制用户可以访问的内容。同样使用load_and_authorize_resource 方法,它将执行Ability.rb 中定义的权限检查