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

Kev*_*ord 11 rest resources post ruby-on-rails

我正在使用rails创建一个API,以显示我正在处理的iPhone应用程序.据我所知,通常在发布到Rails中控制器的create动作时只创建一个资源.但是,我不确定一次创建多个资源的最佳方法.在单个POST中发布包含多个资源的JSON/XML是否可以在同一类型中创建?

例如,创建一条消息,然后添加许多收件人.消息本身有一个模型,然后是属于该消息的收件人的模型.我通过发布到/消息创建消息,但如果我有50个收件人添加到该消息,该怎么办?对/ messages/1 /收件人进行50次单独的POST似乎过度且浪费.最好的方法是什么?

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

dav*_*ron 4

你可以用accepts_nested_attributes_for这个。在您定义关联 \xe2\x80\x93 的父模型 \xe2\x80\x93 中,has_many您需要添加并accepts_nested_attributes_for为其指定相同的关联名称。很像这样:

\n\n
class Message < ActiveRecord::Base\n  has_many :recipients\n  accepts_nested_attributes_for :recipients\nend\n\nclass Recipient < ActiveRecord::Base\n  belongs_to :message\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

有关更多(和更好)的示例,请观看 Railscast

\n