在同时创建和更新记录时PUT或POST?

时间:2012-06-20 11:43:48

标签: ruby-on-rails http post nested-attributes put

我有一个移动应用程序,可以访问运行Rails 3.x应用程序的服务器。数据以JSON格式交换。

我有一个相当复杂的问题,我将在这里尝试简化。

在一种情况下,移动应用会向数据库发布新的促销记录,其中包含对现有订单记录的更新。要将此作为单个HTTP请求实现,它会通过嵌套属性将订单记录属性更新作为新销售记录的一部分进行传递。

销售的Rails模型包括以下内容:

attr_accessible :product_id, :order_id, :order_attributes
accepts_nested_attributes_for :order, :update_only => true

Rails路由是标准的。

由于发布促销的http请求会创建新记录(即它不包含现有的sale_id),我使用HTTP POST。

我可以发布新的促销记录(没有订单记录更新)就好了。

但是,当我包含嵌套属性来更新订单记录时,我会找到404'未找到'。

怀疑这是因为现有订单的嵌套更新包含'id',因此实际上应该是PUT(正确路由)。

为了帮助诊断问题,我尝试将销售(不包含id)的现有工作非嵌套POST更改为PUT请求,在这种情况下,它确实打破功能,我确实得到了404.这告诉我服务器确实会报告PUT / POST混淆为404.

要明确我可以使用相同的代码在其他情况下使用嵌套属性成功发布更新,因此我确信这不是实际的属性编码问题。

我很欣赏有关这是否可能成为问题的想法,如果可以,我会对此做些什么。

谢谢。

0 个答案:

没有答案