【问题标题】:Rails. Switch roles of a single user to buyer/seller like in fiverr导轨。将单个用户的角色切换为买家/卖家,如 Fiverr
【发布时间】:2019-11-21 08:18:02
【问题描述】:

我正在 Rails 中开发一个 Web 应用程序,它需要一个用户拥有两个角色,他只需单击一下即可在两个角色之间切换,就像 Fiverr 一样。我只想知道这样做的最佳方法和宝石。我已经经历了“rolify”和“cancancan”,但还没有弄清楚如何去做。任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails authorization cancancan rolify


    【解决方案1】:

    我建议再试一次“Rolify”和“Cancancan”。因为在Ability 文件中定义了权限之后,您就可以检查当前用户是否在视图中具有类似can?(:read, ModelName) 的权限。在其他区域,您可以使用user.has_role?(:admin) 或您想要命名的角色来检查角色。

    如果您无法让它们工作,您可以使用枚举来创建/检查角色。

    class User < ApplicationRecord
      enum role: %i[admin manager user]
    end
    

    然后您可以检查正确的枚举以查看某些内容,即:user.admin?

    您还可以通过为此创建控制器操作并调用 user.admin! 或您想要的任何枚举角色来相当轻松地更改“角色”。

    【讨论】:

    • 感谢您的回答。我非常感谢您的帮助。但我仍然不清楚我将如何转换角色?就像管理员登录并说它拥有所有权限一样。并且有一个按钮显示“切换到经理”,然后同一用户切换到经理角色,并且从他那里收回一些权利,反之亦然。有什么帮助吗?
    • 是的,使用枚举,您将有更多代码要做全面检查,以查看用户是否具有正确的枚举角色。使用这两个 gem,您可以按照我的描述检查权限,还可以使用 #current_ability(cancancan 提供的方法)限制用户可以访问的内容。同样使用load_and_authorize_resource 方法,它将执行Ability.rb 中定义的权限检查
    • 好的。非常感谢你。让我试试看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2018-03-02
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多