繁体   English   中英

Rails权限:CanCanCan能力-仅显示用户创建的内容

[英]Rails Permissions: CanCanCan Abilities- Show only what user creates

我正在Rails应用程序上使用我的能力模型,以使用cancancan定义我的用户授权/能力。 目前,这是我的ability.rb文件如下所示:

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
        if user.admin?
            can :manage, :all
        else
            can :manage, Application
            can :read, User
        end
    end
 end

我正在测试我的应用程序。 当我登录到没有管理员布尔值的帐户并转到说/ users时,他们可以访问该页面,但是单击show button或其他按钮会将他们引导到根页面,并说他们没有允许。 目前,我有一个Applications控制器/模型(命名约定不佳,稍后会实现)。 但是我只是想做到这一点,以便任何具有布尔值FALSE的用户(如果是管理员)具有不同的功能。 我想要管理员吗? 一个真正的人,能够做任何事情,但是我希望其他所有人只能看到自己的应用程序(不是所有用户输入的所有内容),只能创建一个应用程序,并且只能查看自己的信息在用户显示页面上,并且只能编辑自己的用户信息。 谁能解释如何指定仅由用户创建的事物? 谢谢!

在数据库中定义角色列,并将以下行插入模型中

产生迁移:

class AddRoleToUser < ActiveRecord::Migration
  def change
      add_column :users, :role, :integer
  end
end

将此插入到您的模型中,例如(User.rb)

  enum role: [:Admin, :Client, :Enduser, :ClientUser, :Moderator]

然后您可以使用cancancan管理您的许可

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
        if user.admin?
            can :manage, :all
        else
           can [:new,:create, :update, :destroy], User
        end
    end
 end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM