当指定id时,ActiveResource可以POST一个创建而不是PUTTing吗?

时间:2010-02-04 16:34:48

标签: ruby-on-rails ruby activeresource

我正在使用ActiveResource从另一个调用rails应用程序。我需要向第一个应用程序提供新对象的id(是的,这个应用程序中的控制器创建知道如何处理接收id),所以我做了这样的事情:

a = ActiveResourceModel.new(:id => 1231231, :name => "test")
a.save

然而,不是POST来创建一个新资源,而是将它PUT,导致接收应用尝试更新id为1231231的资源,当然这不存在(我想创建它!),所以我因此而最终收到404错误。

在ActiveResourceModel.new中进行一些测试问题似乎?返回false,而ActiveResourceModel.exists?也返回false(很好,两个应该相反的方法返回相同的!)。

2 个答案:

答案 0 :(得分:2)

检查AResource source and documentationnew?方法检查是否存在id和远程资源的exists?检查,两者都返回相同。

为什么你需要传递id来创建一个新对象?没有意义。 无论如何,您可以尝试使用create方法而不是save

答案 1 :(得分:1)

我有相反的问题。当使用id调用AR.create时,我预测PUT(因为它暗示记录已经存在)。但是,使用Rails 3.1及更高版本,看起来Rails 3.0中的相同代码现在调用PUT实际上调用了POST。谁能证实这一变化? (由于我控制了接收服务器,我只是将POST代码调整为与旧的PUT代码具有相同的行为。)

相关问题