Ruby on rails 使用Rails强参数声明所需的数组参数

Ruby on rails 使用Rails强参数声明所需的数组参数,ruby-on-rails,strong-parameters,ruby-on-rails-6,Ruby On Rails,Strong Parameters,Ruby On Rails 6,在Rails控制器中,我需要一个参数,emails。它必须是一个数组 这是允许的 emails[]=foo@bar.com&emails[]=up@down.com 这是不允许的 emails=foo@bar.com params.require(:电子邮件)将同时允许这两种情况。前者是一个数组。后者作为一根弦。这是一个问题 params.permit(电子邮件:[])不需要emails参数 params.require(:emails).permit([])不起作用,因为param

在Rails控制器中,我需要一个参数,
emails
。它必须是一个数组

这是允许的

emails[]=foo@bar.com&emails[]=up@down.com
这是不允许的

emails=foo@bar.com
params.require(:电子邮件)
将同时允许这两种情况。前者是一个数组。后者作为一根弦。这是一个问题

params.permit(电子邮件:[])
不需要
emails
参数

params.require(:emails).permit([])
不起作用,因为
params.require(:emails)
变得聪明,并返回一个数组,而不是ActionController::Parameters


我如何允许
电子邮件[]=…
和不允许
电子邮件=…

正如塔德曼所说,筛选是强参数最主要的功能

你可以看看葡萄,也许它可以为你的关注点指明一些方向

  desc "API demo", {}
  params do
    requires :id, type: Integer, desc: 'ID'
    requires :name, type: Boolean, desc: 'xxx'
  end

如果您将意外类型的参数传递给它,则会收到错误消息

Strong参数主要与筛选有关,不一定要进行验证。如果您的强参数缺少正确格式的
电子邮件
,您可以随时回退错误,甚至可以在执行操作之前作为
处理程序来回退。@tadman我已经手动解决了这个问题。我这样问是因为
params.require(…).permit(…)
可以处理散列,但不能处理数组,这似乎是一个奇怪的疏忽;我想我错过了什么。我找不到
params.require(:things)->ActionController::Parameters
vs
params.require(:things)->Array
记录在哪里。