首页 > 解决方案 > 在 ActionController::Parameters 上调用 assert_valid_keys 适用于 Rails 5.0 但不适用于 5.1?

问题描述

我有一些在 Rails 5.0.7.2 中运行良好但在 5.1.7 中运行良好的代码:

params.stringify_keys.assert_valid_keys(valid_keys)

其中 params 是一个ActionController::Parameters对象。

在 Rails 5.0.7.2 中它可以工作。在 5.1.7 中,我收到以下错误:

undefined method `assert_valid_keys' for <ActionController::Parameters {"number"=>"123"} permitted: true>:ActionController::Parameters

似乎如果我转换为散列,那么这是可行的,但其他事情最终会破坏这条线,所以我宁愿将参数保留为一个ActionController::Parameters对象,而不是将其转换为散列。

# If I use .to_h then I can call assert_valid_keys
# but other things break down the line...best to keep
# as ActionController::Parameters instead of Hash

params.stringify_keys.to_h.assert_valid_keys(valid_keys)

知道为什么我不能在 Rails 5.1 中调用对象吗.assert_valid_keysActionController::Parameters

提前致谢!

标签: ruby-on-rails

解决方案


推荐阅读