gpt4 book ai didi

ruby-on-rails - 我如何接收 JSON :API post of nested attributes in Ruby on Rails?

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

Rails 中是否有接收(可能嵌套)JSON:API POST 对象的“标准”方法?

JSON:API规范对GET/POST/PUT等使用相同的格式,但rails似乎需要*_attributes和accepts_nested_attributes_for。这些似乎不兼容。

我觉得我正在做的事情一定有些常见,但我在查找文档时遇到了困难。我想要使​​用一个 React/Redux 应用程序,该应用程序使用 JSON:API 规范与 Rails 应用程序进行通信。我只是不确定如何处理嵌套关联。

最佳答案

您可以active_model_serializer gem 的反序列化功能。

来自docs gem :

class PostsController < ActionController::Base
def create
Post.create(create_params)
end

def create_params
ActiveModelSerializers::Deserialization.jsonapi_parse(params, only: [:title, :content, :author])
end
end

以上内容可以与以下 JSON API 负载一起使用:

document = {
'data' => {
'id' => 1,
'type' => 'post',
'attributes' => {
'title' => 'Title 1',
'date' => '2015-12-20'
},
'relationships' => {
'author' => {
'data' => {
'type' => 'user',
'id' => '2'
}
},
'second_author' => {
'data' => nil
},
'comments' => {
'data' => [{
'type' => 'comment',
'id' => '3'
},{
'type' => 'comment',
'id' => '4'
}]
}
}
}
}

无需指定任何选项即可解析整个文档:

ActiveModelSerializers::Deserialization.jsonapi_parse(document)
#=>
# {
# title: 'Title 1',
# date: '2015-12-20',
# author_id: 2,
# second_author_id: nil
# comment_ids: [3, 4]
# }

关于ruby-on-rails - 我如何接收 JSON :API post of nested attributes in Ruby on Rails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56174992/

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