gpt4 book ai didi

ruby-on-rails - 如何 sanitizer 葡萄参数

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:04 28 4
gpt4 key购买 nike

我想批量更新实体的属性。

如何正确清理来自葡萄的参数?

这是我关于参数的控制台日志:

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

最佳答案

在 grape 中,您需要在实际方法之前声明您的参数。

在方法中,params 对象是一个 Hashie::Mash 实例,并且没有像 permitsanitize 这样的 API ...

Here是葡萄中声明和验证参数的相关文档:

You can define validations and coercion options for your parameters using a params block.

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

When a type is specified an implicit validation is done after the coercion to ensure the output type is the one declared.

如果您仍想使用强参数,则需要使用 strong_parameters gem,并创建 ActionController::Paramter 的新实例 yourself :

raw_parameters = { :email => "john@example.com", :name => "John", :admin => true }
parameters = ActionController::Parameters.new(raw_parameters)
user = User.create(parameters.permit(:name, :email))

关于ruby-on-rails - 如何 sanitizer 葡萄参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956460/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com