[英]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.