Bot*_*oti 3 ruby ruby-on-rails grape-api
我想批量更新实体的属性.
我怎样才能正确消毒来自葡萄的虫子呢?
这是关于参数的控制台日志:
params.except(:route_info, :token, :id)
=> {"display_number"=>"7"}
[18] pry(#<Grape::Endpoint>)> params.permit(:display_number)
ArgumentError: wrong number of arguments (2 for 0..1)
from /Users/boti/.rvm/gems/ruby-2.0.0-p353@thelocker/gems/hashie-2.0.5/lib/hashie/mash.rb:207:in `default'
[19] pry(#<Grape::Endpoint>)> params.sanitize
=> nil
Run Code Online (Sandbox Code Playgroud)
在葡萄中,你需要在实际方法之前声明你的参数.
在该方法的params对象是一个Hashie::Mash实例,并且不会有像的API permit和sanitize...
以下是在葡萄中声明和验证参数的相关文档:
您可以使用
params块为参数定义验证和强制选项.Run Code Online (Sandbox Code Playgroud)params do requires :id, type: Integer optional :text, type: String, regexp: /^[a-z]+$/ group :media do requires :url end optional :audio do requires :format, type: Symbol, values: [:mp3, :wav, :aac, :ogg], default: :mp3 end mutually_exclusive :media, :audio end put ':id' do # params[:id] is an Integer end指定类型时,在强制执行后执行隐式验证,以确保输出类型是声明的输出类型.
如果您仍想使用强参数,则需要使用strong_parametersgem,并为ActionController::Paramter 自己创建一个新实例:
Run Code Online (Sandbox Code Playgroud)raw_parameters = { :email => "john@example.com", :name => "John", :admin => true } parameters = ActionController::Parameters.new(raw_parameters) user = User.create(parameters.permit(:name, :email))
| 归档时间: |
|
| 查看次数: |
6213 次 |
| 最近记录: |