如何在没有模型cancancan的情况下为api资源设置能力

时间:2016-09-14 10:16:56

标签: ruby-on-rails api cancancan

我的问题是我不明白如何在没有模型的情况下为资源设置能力。从现在开始我有单个api控制器

class Api::V1::ProfilesController < Api::V1::BaseController   

  before_action :doorkeeper_authorize! 

  authorize_resource class: User
  respond_to :json

  api :GET, '/profiles', "This is index for all registered users except current user" 
  def index    
    render json: User.where.not(id: current_resource_owner.id)   
  end 

  api :GET, '/profiles/me', "This is current user profile's data"
  def me    
    render json: current_resource_owner      
  end

  protected
  def current_resource_owner
    @current_resource_owner ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
  end
end

在这种情况下,Profile不是模型,它只是一个控制器(api资源)我也有cancan能力

can :me, User, id: user.id
can **index????**, User, id: user.id

设置自定义 me 操作的能力并不棘手,但是如何设置它:仅在Profiles控制器中设置索引(因为我已经为UsersController设置了能力,也有:index 操作,我不想更改它们)

我只是个初学者所以请原谅我,如果我的解释不是那么直截了当(如果要求我可以写一些额外的解释)和我的英语

1 个答案:

答案 0 :(得分:1)

请参阅:SO Question

请查看以下行:authorize_resource :class => false