【发布时间】:2020-12-24 02:09:12
【问题描述】:
我正在编写 Rails API 并尝试通过将 JSON 数组传递到控制器来同时创建多个记录,如下所示:
[
{
"workflow_id": 1,
"action": "Some Other Action",
"order": 2,
"notes": null
},
{
"workflow_id": 1,
"action": "Some Action",
"order": 1,
"notes": null
}
]
当我查看进入控制器的参数时,我看到的是这样的:
<ActionController::Parameters {"_json"=>[{"workflow_id"=>1, "action"=>"Some Other Action", "order"=>2, "notes"=>nil}, {"workflow_id"=>1, "action"=>"Some Action", "order"=>1, "notes"=>nil}], "controller"=>"workflow_steps", "action"=>"update", "workflow_id"=>"1", "workflow_step"=>{}} permitted: false>
首先,我不熟悉_json。这是传入数组时的 Rails 约定吗?我找不到任何关于它的文档。
第二,当我尝试这个时:WorkflowStep.create(params[:_json]) 我得到了预期的ForbiddenAttributesError。但是,我无法弄清楚如何正确地将数组中的 json 对象列入白名单。我试过这些:
params.require(:_json).permit(_json: [:workflow_id, :action, :notes, :order])
params.permit(_json: [:workflow_id, :action, :notes, :order])
但我收到此错误:undefined method permit' for #Array:0x00007ffdeb0f8188`
我不确定如何继续。谢谢。
【问题讨论】:
标签: ruby-on-rails rails-activerecord