2015-04-15 5 views
1

У меня есть ссылка на доступ к игроку load_player для доступа к игроку, принадлежащему current_user. Итак, как я могу ограничить доступ к методу load_player для current_user, у которого нет клуба или клуба, принадлежащего другому пользователю. Примечание. Я хочу ограничить доступ к странице load_player.авторизация определенного действия контроллера с помощью cancancan

routes.rb

get 'player/load_player/:id' => "player#load_player", as: :player 

player_controller.rb

class PlayerController < ApplicationController 

    before_action :authenticate_user! 
    authorize_resource :class => false 

    layout "player" 

    def load_player 
    @club_hash = Club.where({:id => params[:id]}).pluck(:club_hash).first 
    end 
end 

ability.rb

class Ability 
    include CanCan::Ability 
    def initialize(user) 
    user ||= User.new # guest user (not logged in) 

    if user.is?(:admin) 
     can :manage, :all 
    elsif user.is?(:owner) 
     can :read, all: { except: [UploadedSong]} 
     can :manage, Club, user_id: user.id 
     can :read, :load_player, id: user.id 
    elsif user.is?(:user) 
     can :read, all: { except: [UploadedSong]} 
    end  
    end 
end 

ответ

1
current_user.clubs.where(id: params[:id]).pluck(:club_hash).try(:first) 

# or add user_id inside where clause 

Club.where(id: params[:id], user_id: current_user.id).pluck(:club_hash).try(:first) 

Надежда это решить вашу проблему :)

+0

спасибо @przbadu, это решило мою проблему. – codemilan

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

  • Нет связанных вопросов^_^