2017-03-03 43 views
0

对于我的一种方法,以下方法无效。我几乎复制所有直接从官方文档的:红宝石/葡萄在一定条件下所需的参数

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” ==“本地”应该向用户提供“管理员”和“密码”

错误:

[ 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

“给定”接受PROC只因为葡萄版本0.17,实施在合并请求(MR)1443。所以你应该更新,或者如果这不可行,请尝试将此MR重新移植到0.16.2。

Here's您的版本的自述文件。

另外,在你的例子中,authenticationType参数类型为Array[String],所以(至少在葡萄0.17中),proc将收到Hashie::Array

这意味着:

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

应该

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