2015-06-22 80 views
0

如果我有用戶,客戶端和請求型號如下:複雜條件

#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

回答

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