我想在我的 rails 应用程序中授予用户权限。我有可以创建、更新和删除所有帖子和评论的“管理员”,只能创建和更新他自己的评论的“用户”,以及不能执行这些操作的“访客”。为此,我使用了 gem “设计”和“cancancan”。我了解“设计” gem ,但我不了解“cancancan”。
在类能力.rb 中,我如何为这些用户(管理员、用户、访客)编写权限?
最佳答案
Cancancan
允许您仅定义给定上下文的权限。此上下文可能是不属于 cancancan
的用户角色因此角色必须由您自己定义。
有多种方法可以定义用户角色,例如
Role
型号, 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/