Httparty :: Response并尝试(:parsed_response)奇怪的行为

时间:2013-04-10 23:08:55

标签: ruby-on-rails ruby activesupport httparty

我尝试在HttpParty :: Response的实例上使用ActiveSupport(2.3-stable)try()。我有一个非常奇怪的行为:

> ro.parsed_response
{"error"=>"RecordInvalid", "description"=>"Record validation errors", "details"=>{"email"=>     [{"description"=>"Email: foo@bar.com is already taken by another user"}]}}

> ro.try(:parsed_response)
NoMethodError Exception: undefined method `parsed_response' for #<Hash:0x11397d5d8>

在第一个示例中,我使用点表示法将parsed_response消息发送到ro。它工作正常。在第二个中,我尝试使用ActiveSupport的try()调用它,并且(令人惊讶地)引发了NoMethodError异常。

在这种情况下,不应该尝试()返回nil吗?如果我可以使用点表示法调用它,为什么不找到“parsed_response”方法,如第一个例子中所示?

提前致谢!

1 个答案:

答案 0 :(得分:0)

不知道如何,但似乎ro对象被“转移”为已发送parsed_response方法的哈希值。
在Rails 2.3@ruby 1.8 undefined method for object raises an exception

此外,docs仅用于调用 nil 对象,而没有关于没有特定方法的对象:

  

与该方法不同,NoMethodError异常不会   如果接收对象是a,则将返回raise和nil   零对象或NilClass。