加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用cancancan?

发布时间:2020-12-17 02:47:54 所属栏目:百科 来源:网络整理
导读:我想在我的rails应用程序中为用户授予权限.我有’admin’可以创建,更新和删除所有帖子和评论,’user’可以创建和更新他自己的评论,’guest“谁不能做这些.为此,我使用了宝石’devise’和’cancancan’.我理解’设计’宝石,但我不明白’cancancan’. 在class
我想在我的rails应用程序中为用户授予权限.我有’admin’可以创建,更新和删除所有帖子和评论,’user’可以创建和更新他自己的评论,’guest“谁不能做这些.为此,我使用了宝石’devise’和’cancancan’.我理解’设计’宝石,但我不明白’cancancan’.

在class ability.rb中,如何为这些用户(admin,user,guest)写权限?

解决方法

Cancancan允许您仅定义给定上下文的权限.此上下文可能是一个用户角色,它不是cancancan的一部分,因此角色必须由您自己定义.

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

>作为角色模型,
> Rails enum,
>按照建议here,
>作为用户模型的字符串属性.

这完全取决于用例.可以在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读