2015-03-31 3 views
0

Это мои способности и я Ограниченные пользователи, чтобы они могли читать только их собственные. но если я пройду через маршруты, я все равно могу увидеть индекс других пользователей.cancan method and devize

Я не хочу помещать текущего пользователя в индексный маршрут, потому что тогда я ограничу администратор, потому что у меня есть модели, администратор и пользователь.

class Ability 
     include CanCan::Ability 

     def initialize(user) 

     if user.is_a?(Admin) 

      can :manage, :all 

     elsif user.is_a?(User) 

      can :show, Profile 

      can :read, Profile do |profile| 
      profile.try(:user) == user 
      end 
      can :update, Profile do |profile| 
      profile.try(:user) == user 
      end 
      can :destroy, Profile do |profile| 
      profile.try(:user) == user 
      end 
      can :create, Profile 

     else 

      can :show, Profile 
      cannot :destroy 
      cannot :create 

     end 
     end 
    end 

ответ

0

Окрашенные и добавленные ограничения для просмотра страниц с индексами пользователей и профилей.

class Ability 
     include CanCan::Ability 

     def initialize(user) 

     if user.is_a?(Admin) 

      can :manage, :all 

     elsif user.is_a?(User) 
      can [:show, :create], Profile 
      can [:read, :update, :destroy], Profile, user: user 
      cannot :index, Profile 
      cannot :index, User 
     else 
      can :show, Profile 
      cannot :destroy 
      cannot :create 

     end 
     end 
    end 

Что вам нужно будет сделать, это просто перенаправить пользователя на исключение, исключающее доступ. Take a look into docs

Смежные вопросы