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

Rails Permissions: CanCanCan Abilities- Show only what user creates

我正在我的 Rails 应用程序上开发我的能力模型,以使用 cancancan 定义我的用户 authorization/abilities。目前,我的 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

我正在测试我的应用程序。当我登录一个没有 admin 布尔值的帐户并去说 /users 时,他们可以访问该页面,但是单击显示按钮或其他任何东西都会将他们带到根页面并说他们没有允许。目前我有一个应用程序 controller/model(糟糕的命名约定,后来才意识到)。但我只是想做到这一点,以便任何拥有布尔值 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