Rails创建模型以及来自JSON的关联数据

时间:2015-04-12 20:35:06

标签: ruby-on-rails json activerecord

我的模型Case的Rails API中有一个RESTful创建操作。这很简单:

@case = Case.new(case_params)

if @case.save
    render json: @case, status: :created, location: @case
else
    render json: @case.errors, status: :unprocessable_entity
end

我将数据发布到端点(JSON),包含模型和关联的字段。当表格填写在前端时,包括地址。 Case模型有许多Address模型。

所以我将JSON中的地址包含为对象数组,例如:

{
  "field_on_case": "value",
  "addresses": [{
    "street_address": "1234 wonderland"
  }, {
    "street_address": "4321 wonderland"
  }]
}

执行此操作并POST到API时,我在Web服务器中看到:Unpermitted parameters: addresses

我在Case方法的case_params控制器中有这个代码段:

params.require(:case).permit(:addresses, addresses_attributes: [:id, :type, :street_address, :city, :zip, :state])

我的Case模型中也有这一行:

accepts_nested_attributes_for :addresses

1 个答案:

答案 0 :(得分:0)

如果属性是哈希,则需要指定:

addresses: [ ]
在你的参数中。 我想你可以使用:

params.require(:case).permit(addresses: [:type, :street_adress, :city, :zip, :state])

然后您也可以从模型中删除nested_attribute。