Cancan Gem | لا يمكن: الفهرس ، المستخدم
-
23-09-2019 - |
سؤال
نموذج مستخدم أساسي للغاية ، أتمنى لمستخدم المسؤول: إدارة الكل
لا يمكن أن: الفهرس والمستخدم وبعض الخيارات الأخرى ، ولكن عندما أحاول منع المستخدمين من غير المسؤولين من عرض فهرس المستخدم ، لم يتمكن مستخدم المسؤول أيضًا.
هذه هي قدرتي. rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new #guest user
can :manage, :all if user.role == "admin" #if user.admin? can :manage, :all
can :assign_role, User
else
can :read, :all
can :create, User
cannot :assign_role, User
cannot :index, User
can [:show, :edit, :update], User do |current_user|
user.id == current_user.id || user.role == "admin"
end
end
end
ما الذي يمكنني فعله لإيقاف جميع المستخدمين الذين يتم حظرهم من فهرس المستخدم؟
يعتبر
دان
المحلول
شيء خاطئ مع IF-ELSE في الكود.
if user.role == "admin"
can :manage, :all
can :assign_role, User
else
can :read, :all
can :create, User
cannot :assign_role, User
cannot :index, User
can [:show, :edit, :update], User do |current_user|
user.id == current_user.id || user.role == "admin"
end
end
وأيضًا ليس عليك حرمان المستخدمين من غير الإدارة من تعيين دور واضح (لا يمكن: تعيين _role ، المستخدم).
لا تنتمي إلى StackOverflow