簡體   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