Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails筛选参数筛选过多_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails筛选参数筛选过多

Ruby on rails Rails筛选参数筛选过多,ruby-on-rails,ruby,Ruby On Rails,Ruby,在筛选参数初始值设定项中,我筛选出所有与密码相关的重要参数: # config/initializers/filter_parameter_logging.rb Rails.application.config.filter_parameters += [:password, :password_confirmation] 但筛选出的参数比我预期的要多。它看起来像是从日志中筛选出的名称中包含“password”的任何内容 {"password_invite_form"=>"[FILTE

在筛选参数初始值设定项中,我筛选出所有与密码相关的重要参数:

# config/initializers/filter_parameter_logging.rb
Rails.application.config.filter_parameters += [:password, :password_confirmation]
但筛选出的参数比我预期的要多。它看起来像是从日志中筛选出的名称中包含“password”的任何内容

 {"password_invite_form"=>"[FILTERED]"}

有没有办法阻止过滤参数的模式匹配并匹配我设置的精确参数?

有。您必须对rails中过滤掉包含“password”的参数的部分进行修补


如果它是我的项目,我会让rails继续做它的事情,并为该参数选择一个不同的名称。如果您需要有关如何进行此操作的帮助,只需注释即可。

如果您希望显式控制模式匹配,可以使用正则表达式,而不是字符串或符号

# config/initializers/filter_parameter_logging.rb
Rails.application.config.filter_parameters += [/^password$/, /^password_confirmation$/]

这将告诉Rails准确地过滤“password”和“password\u confirmation”,但不过滤包含“password”作为子字符串的其他参数。

我真的很惊讶文档没有强调这一点。顺便提一下,但没有提到这同样适用于日志过滤。在我维护的一个应用程序中,用于隐藏
dln
tin
字段的过滤器影响了
dln\u状态
报告
字段。值得注意的是,未来的访问者可以使用正则表达式进行“深度过滤”,至少在Rails 5中是这样,但点分隔符确实需要转义。e、 g.在我的例子中,过滤器
/attachments\.content$/
与嵌套附件的
content\u type
属性以及任何其他模型的
content
属性都不匹配。