gpt4 book ai didi

ruby-on-rails - 如何通过 Rails API 接受 JSON 而没有嵌套字段的 "_attributes"

转载 作者:行者123 更新时间:2023-12-03 12:08:58 24 4
gpt4 key购买 nike

我用 Rails 编写了一个 API,需要在 API 调用中接受一些nested_attributes。

目前我通过发送数据

补丁/api/v1/vintages/1.json

{
"vintage": {
"year": 2014,
"name": "Some name",
"foo": "bar",
"sizes_attributes": [
{
"name": "large",
"quantity": "12"
},
{
"name": "medium",
"quantity": "2"
}
]
}
}

但是,我想执行以下操作:

补丁/api/v1/vintages/1.json
{
"vintage": {
"year": 2014,
"name": "Some name",
"foo": "bar",
"sizes": [
{
"name": "large",
"quantity": "12"
},
{
"name": "medium",
"quantity": "2"
}
]
}
}

区别是 属性 作为字段键的一部分。我希望能够 accept_nested_attributes_for :sizes无需使用 _attributes成为 JSON 对象的一部分。

有谁知道如何管理这个?

最佳答案

您可以自由地在您的强参数方法中执行一些魔术。根据您的需要,您的 Controller 中可能有此方法:

def vintage_params
params.require(:vintage).permit(:year, :name, :foo, { sizes: [:name, :quantity] })
end

您需要做的就是调整 sizes 的名称。键入该方法。我建议:
def vintage_params
vintage_params = params.require(:vintage).permit(:year, :name, :foo, { sizes: [:name, :quantity] })
vintage_params[:sizes_attributes] = vintage_params.delete :sizes
vintage_params.permit!
end

这将删除 :sizes键并将其放入预期的 :sizes_attributes不会弄乱你漂亮的 json。您无法直接使用 accepts_nested_attributes_for 进行任何操作更改名称。

关于ruby-on-rails - 如何通过 Rails API 接受 JSON 而没有嵌套字段的 "_attributes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com