CanCanCan中的复杂条件可以方法

时间:2015-06-22 05:29:24

标签: ruby-on-rails cancan cancancan

如果我有以下用户,客户和请求模型:

#user.rb


#client.rb
has_one :user
has_many :requests

#request.rb
belongs_to :client

我使用用户模型进行CanCanCan身份验证。 内部能力类我想指定客户端的能力。我想用户允许读取,仅更新属于他的请求。 她就是我的尝试:

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

2 个答案:

答案 0 :(得分:1)

<div class="button-bar">
     <a class="button" ng-click="data.filter='cat'">Cats cats and more cats</a>
     <a class="button" ng-click="data.filter='dog'">Dogs</a>
     <a class="button" ng-click="data.filter='bird'">Birds</a>
</div>    

答案 1 :(得分:1)

这是最简单的选择:

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

如果你的能力比这更复杂,那么你可以这样做:

can [:read, :update], Request do |request|
  request.client_id == user.id
end