在我的本地开发rails环境中,我能够很好地检查SOAP调用的输出。
我可以使用response.id
从.inspect方法显示此数据包的值:
#<SOAP::Mapping::Object:0x15702d0c0604 {}id="dd26ce5f-0cfd-9bbb-3485-4c64c9d6378
4" {}error=#<SOAP::Mapping::Object:0x15702d0bf6f0 {}number="0" {}name="No Error"
{}description="No Error">>
但是,当我把它推到heroku时,我收到了这个错误:
/disk1/home/slugs/212074_6b040a6_5c2e/mnt/app/controllers/sugarcrm_controller.rb
:77: warning: Object#id will be deprecated; use Object#object_id
让我疯狂地理解这种差异。
建议?
答案 0 :(得分:1)
您可能习惯使用基于ActiveRecord的对象,并且此对象看起来不像是基于ActiveRecord。 id
是soon to be deprecated,object_id
是Ruby对象上的方法。
这并不意味着ActiveRecord上的id
将被弃用,只是在“普通的旧Ruby对象”上。
答案 1 :(得分:0)
我相信你的代码中可能有一个错误,这就是抛出警告的原因。当您无意中对{I}期望的对象调用Object#id
时,通常会调用id
:{/ 1}}
nil
如果对象具有>> nil.id
(irb):1: warning: Object#id will be deprecated; use Object#object_id
=> 4
方法,则不会抛出警告。因此,假设它在本地工作(并且此SOAP对象确实具有id
方法),您应该获得此警告的唯一方法是它是否是另一种对象。
因此,您是否完全确定您所期望的对象是否被退回?尝试添加:
id
或者添加一些明确的错误处理/对象检查:
logger.info ">>> SOAP OBJECT: " + object.inspect
至少你会知道出了什么问题。