Rails中的强参数在修改内容后忽略参数

时间:2017-06-01 06:36:12

标签: ruby-on-rails ruby activerecord strong-parameters

我在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创建Request对象时,emails参数由于某种原因被忽略。

在解析参数后是否有任何理由不允许此参数?

我必须明确指定电子邮件属性才能解决问题:

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

为什么在允许参数之前尝试操作参数?您应该在保存模型之前/之后修改它。

如果您仍想这样做,请尝试以下方法:

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