ruby-on-rails - 如何使用康康康?

标签 ruby-on-rails authorization cancancan

我想在我的 rails 应用程序中授予用户权限。我有可以创建、更新和删除所有帖子和评论的“管理员”,只能创建和更新他自己的评论的“用户”,以及不能执行这些操作的“访客”。为此,我使用了 gem “设计”和“cancancan”。我了解“设计” gem ,但我不了解“cancancan”。

在类能力.rb 中,我如何为这些用户(管理员、用户、访客)编写权限?

最佳答案

Cancancan允许您仅定义给定上下文的权限。此上下文可能是不属于 cancancan 的用户角色因此角色必须由您自己定义。

有多种方法可以定义用户角色,例如

  • 作为 Role型号,
  • rails enum ,
  • 按照建议 here ,
  • 作为 User 的字符串属性模型。

  • 这一切都取决于用例。可以在 here 中找到如何定义能力的示例。 .在你的情况下,它看起来像:
    class Ability
      include CanCan::Ability
    
      def initialize(user)
        user ||= User.new
    
        if user.reviewer? #Just a logged user
          can :manage, Comment, { owner_id: user.id }
        elsif user.admin?
          can :manage, :all
        end
      end
    end
    
    class User < ActiveRecord::Base
      enum role: [ :reviewer, :admin ]
    end
    

    关于ruby-on-rails - 如何使用康康康?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357087/

    相关文章:

    iis-7 - IIS 7.5 Windows身份验证在Chrome中不起作用

    ruby-on-rails - 在 CanCan 中通过多项操作进行授权

    ruby-on-rails - Rails/Cancan - 通过关联加载资源

    ruby-on-rails - 如何将 CanCanCan 与枚举字段一起使用?

    ruby-on-rails - 无法识别 ubuntu 终端中的 rails ,但在 aptana 终端中

    ruby-on-rails - 当您在 Ruby on Rails 中对实例变量执行 'redirect_to' 时会发生什么?

    ruby-on-rails - ActiveRecord 不缺常数 Base!将 rails 3.2.9 jruby 1.7.2 部署到 weblogic 10.3 时出错

    ruby-on-rails - 多个数据库的测试和 database_cleaner

    c# - Odata如何授权用户角色的$expand功能?

    ruby - cancancan 创建权限不能正常使用条件散列