gpt4 book ai didi

ruby-on-rails - ActionController::Parameters 弃用警告:方法大小已弃用,将在 Rails 5.1 中删除

转载 作者:行者123 更新时间:2023-12-04 19:35:21 25 4
gpt4 key购买 nike

我最近遇到了这个弃用警告

DEPRECATION WARNING: Method size is deprecated and will be removed in Rails 5.1, as ActionController::Parameters no longer inherits from hash. Using this deprecated behavior exposes potential security problems. If you continue to use this method you may be creating a security vulnerability in your app that can be exploited.



参数看起来像这样:
<ActionController::Parameters { "objects" => 
<ActionController::Parameters {
"0"=>{"priority"=>"24", "style"=>"three_pictures"},
"1"=>{"priority"=>"24", "style"=>"three_pictures"},
"2"=>{"priority"=>"24", "style"=>"three_pictures"}
} permitted: false> } permitted: false>

我试图找到 objects 的大小像这样: params[:objects].size
然后我用 length 尝试了同样的事情和 count ,这会导致相同的警告。解决这个问题的方法是什么? .keys.length是可行的,但这是正确的方法还是我在这里遗漏了什么?

最佳答案

如评论中所述,您必须转换 params在 Rails 5 中进行哈希处理 params不再继承自 Hash .所以.size , .length.count不会直接处理参数。

如何将其转换为 Hash (更短的代码可能是可能的):

permitted_params = params.require(:your_model_name).permit(
:product_inspirationals => [
:priority,
:style
]
).to_h

puts permitted_params[:product_inspirationals].length

不知道您的模型结构,因此您必须根据需要对其进行调整。

关于ruby-on-rails - ActionController::Parameters 弃用警告:方法大小已弃用,将在 Rails 5.1 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256292/

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