2016-05-14 57 views
0

我想为我的行动做一个参数验证检查。但不知何故,它不工作。有人可以建议我怎么做。以下是我的代码。如果我发送没有任何参数的请求,则参数验证不会发生。我可以知道原因吗?请问我该如何解决这个问题。葡萄params vlidation不工作获取行动

module API 
    module V1 
    class Permissions < Grape::API 
     include Defaults 

     helpers do 
     def ensure_user_exists! 
      error!('Not authorized', 401) unless user_by_token.present? 
     end 

     def user_by_token 
      @user ||= User.find_by(token: params[:user_token]) 
     end 
     end 

     resource :permissions do 
     params do 
      requires :user_token, type: String 
     end 

     before do 
      ensure_user_exists! 
     end 

     resource :documents do 
      get :document_details do 
      error!('Access Denied', 403) unless user_by_token.manager? 
      end 
     end 
     end 
    end 
    end 
end 



localhost:3000/api/permissions/documents/document_details.json returning error in user_by_token method. 

回答

1

你弄丢了PARAMS块。你应该把它放在以前得到块,像这样:

module API 
    module V1 
    class Permissions < Grape::API 
     include Defaults 

     helpers do 
     def ensure_user_exists! 
      error!('Not authorized', 401) unless user_by_token.present? 
     end 

     def user_by_token 
      @user ||= User.find_by(token: params[:user_token]) 
     end 
     end 

     resource :permissions do 

     before do 
      ensure_user_exists! 
     end 

     resource :documents do 

      params do 
      requires :user_token, type: String 
      end 
      get :document_details do 
      error!('Access Denied', 403) unless user_by_token.manager? 
      end 

     end 
     end 
    end 
    end 
end 
+0

尝试,以及但不工作:-( –

+0

添加错误日志在你的问题,所以我们可以弄清楚发生了什么。 – Marlon