2017-03-03 10 views
0

私の方法の1つでは、以下が機能しません。特定の条件でRuby/Grapeが必要とするパラメータ

params do 
requires :authenticationType, type: Array[String], values: ['LOCAL', 'AD'] 
given authenticationType: ->(val) { val == 'LOCAL' } do 
    requires :admin, type: String, allow_blank: false, regexp: /^[\w\.\@-]{1,64}$/ 
    requires :password, type: String, allow_blank: false, regexp: /^[\w\.\@-]{1,64}$/ 
end 
end 

「指定された」行にエラーが表示されています。誰が何が間違っているか知っている。私の目標:場合にのみ、「authenticationType」==「LOCAL」ユーザは、「管理者」と「パスワード」を提供しなければならない

エラー:

[ 2017-03-03 00:39:18.4848 14970/7f5d0603f700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /vagrant/masterapi: An error occurred while starting up the preloader. Error ID: 0bd79149 Error details saved to: /tmp/passenger-error-3OYsdJ.html Message from application: Grape::Exceptions::UnknownParameter (Grape::Exceptions::UnknownParameter)
/usr/local/lib/ruby/gems/2.3.0/gems/grape-0.16.2/lib/grape/dsl/parameters.rb:170:in block in given'
/usr/local/lib/ruby/gems/2.3.0/gems/grape-0.16.2/lib/grape/dsl/parameters.rb:169:in
each'
/usr/local/lib/ruby/gems/2.3.0/gems/grape-0.16.2/lib/grape/dsl/parameters.rb:169:in given' /vagrant/masterapi/controllers/papi_controller.rb:93:in block in '

+0

でなければなりません。 –

答えて

0

「与えられた」はブドウのバージョン0.17、実装以来、PROCを受け入れますマージリクエスト(MR)1443。したがって、更新する必要があります。そうでない場合は、このMRを0.16.2に戻してみてください。

Here'sご使用のバージョンのREADME。

authenticationType paramのタイプはArray[String]なので(少なくともブドウ0.17)、procにはHashie::Arrayが返されます。

これは意味:

->(val) { val == 'LOCAL' }

は、エラーが表示されるはずです

->(val) { val.first == 'LOCAL' }

関連する問題