我尝试在 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 异常。
在这种情况下, try() 不应该返回 nil 吗?如果我可以使用点符号调用它,为什么它找不到“parsed_response”方法,如第一个示例中所示?
提前致谢!