gpt4 book ai didi

ruby-on-rails - 在 rails 中的单个 RESTful POST 中创建多个资源

转载 作者:行者123 更新时间:2023-12-04 02:23:43 26 4
gpt4 key购买 nike

我正在 Rails 中创建一个 API 以公开给我正在开发的 iPhone 应用程序。我知道通常在发布到 Rails 中 Controller 的创建操作时,您只会创建一个资源。但是,我不确定同时创建多个资源的最佳方式。在单个 POST 中发布包含多个要创建的相同类型资源的 JSON/XML 是否可以接受?

例如,创建一条消息,然后添加许多收件人。有消息本身的模型,然后是属于消息的收件人的模型。我通过发布到/messages 来创建消息,但是如果我有 50 个收件人要添加到该消息中呢?将 50 个单独的 POST 发送到/messages/1/recipients 似乎过度且浪费。解决这个问题的最佳方法是什么?

我是 Rails 和 RESTful 应用程序的新手,非常感谢任何帮助。

最佳答案

您可以使用 accepts_nested_attributes_for为了这。在你的父模型中——你定义你的 has_many关联 – 您需要添加 accepts_nested_attributes_for给它相同的关联名称。很像这样:

class Message < ActiveRecord::Base
has_many :recipients
accepts_nested_attributes_for :recipients
end

class Recipient < ActiveRecord::Base
belongs_to :message
end

然后,在您的消息表单中,您将有一堆收件人字段,名称类似于 message[recipients_attributes][][name]message[recipients_attributes][][email] .或者你可以使用 form_forfields_for (当您转到 new 页面时,您只需要记住在您的 has_many 集合中构建至少一个实例)。

更多(更好)的例子, watch this Railscast .

关于ruby-on-rails - 在 rails 中的单个 RESTful POST 中创建多个资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698266/

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