Strong Parameters in Rails 内容修改后忽略一个参数

Strong Parameters in Rails ignores a parameter after the content is modified

我在 rails 控制器中使用强参数时遇到问题。这是我的代码:

def request_params
  params[:req][:emails] = params[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup
  params.require(:req).permit(:emails, :body, :link, :other, :attributes)        
end

@request = Request.new(request_params)

当使用 request_params 创建请求对象时,emails 参数由于某种原因被忽略。

解析后有什么理由不允许这个参数?

为了解决问题,我必须明确分配电子邮件属性:

@request.emails = params[:req][:emails]

但我想知道是否有更清晰的解决方案。

提前致谢。

为什么你在允许之前尝试操纵参数?您应该修改它 before/after 保存在模型中。

如果您仍然想这样做,请尝试这样的操作:

def request_params
  temp = params.require(:req).permit(:emails, :body, :link, :other, :attributes)
  temp[:req][:emails] = temp[:req][:emails].delete(' ').split(/\r\n|\n|,/).reject(&:blank?).dup
  temp.permit!
end