2015-06-22 2 views
0

Если у меня есть модели пользователя, клиента и запрос следующим образом:Сложные условия в метод может CanCanCan

#user.rb 
 

 

 
#client.rb 
 
has_one :user 
 
has_many :requests 
 

 
#request.rb 
 
belongs_to :client

Я использую модель пользователя для аутентификации CanCanCan. Внутри класса способности я хочу указать способность для клиента. Я хочу, чтобы пользователь разрешил чтение, обновление только для запросов, принадлежащих ему. Her что я попробовать:

def client 
 
    can [:read,:update], [Request], ['client_id = ?', user.client_id] do |client| 
 
     ......something here 
 
    end 
 
end

ответ

1
can [:read, :update], Request, :client_id => user.id 
1

здесь самый простой вариант:

can [:read, :update], Request, :client_id => user.id 

, если у вас есть более сложные способности, чем это, то вы можете сделать:

can [:read, :update], Request do |request| 
    request.client_id == user.id 
end 
Смежные вопросы