相关疑难解决方法(0)

如何正确设置我的CanCanCan权限?

我对如何正确配置CanCanCan感到有点困惑.

对于初学者,我是否必须添加load_and_authorize_resource到我想限制访问的每个控制器资源?

这就是我想做的事情:

  • 管理员可以管理和访问所有控制器和操作
  • 编辑可以阅读所有,管理:新闻室,并可以管理所有帖子
  • 会员可以阅读每个帖子并可以创建和更新帖子(不能编辑/删除/其他任何内容),无法访问新闻编辑室.我们的业务规则中的更新和编辑帖子之间的区别在于更新正在创建一个新帖子,该帖子是当前帖子的子帖子.所以这不是编辑.只是一个有祖先协会的新记录.
  • 访客可以阅读每个帖子,但不能创建帖子或访问新闻室.

这就是我的ability.rb样子:

class Ability
  include CanCan::Ability
  def initialize(user)
    user ||= User.new # guest user (not logged in)
    #Admin
   if user.has_role? :admin
        can :manage, :all
        can :manage, :newsroom
   # Editor
    elsif user.has_role? :editor
      can :read, :all
      can :manage, :newsroom
      can :manage, Post
    #Member
    elsif user.has_role? :member
        can :read, :all
        can :create, Post
        can :status, Post
        can :update, Post do |post|
            post.try(:user) == user
        end
    #Guest
    else
        can :read, :all
        can :create, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails cancan ruby-on-rails-4 cancancan

5
推荐指数
2
解决办法
8371
查看次数