2010-08-13 28 views
1

Possible Duplicate:
Rails primary key and object id爲什麼會出現錯誤:Object#id將被棄用;使用對象#object_id

在我的本地開發rails環境中,我能夠檢查SOAP調用的輸出就好了。

#<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 

我可以用response.id從這個數據包獲得的價值使用.inspect方法顯示

讓我瘋狂地理解這種差異。

對此提出建議?

+0

你檢查了所有你需要的寶石嗎? – nathanvda 2010-08-13 06:25:02

+0

我該怎麼做?我沒有得到有關gem的任何錯誤......在gem中有一些需要語句來完成連接到SugarCRM API的所有SOAP東西......但我認爲那些是現有的庫? – Angela 2010-08-13 15:47:53

+0

dupplicate的http://stackoverflow.com/questions/2173811/rails-primary-key-and-object-id – 2011-07-11 10:15:33

回答

0

我相信你可能在你的代碼中有一個bug,這就是爲什麼會引發這個警告。

>> nil.id 
(irb):1: warning: Object#id will be deprecated; use Object#object_id 
=> 4 

如果對象有一個id方法,警告不會拋出:Object#id是當你無意中調用一個對象上id你沒有想到,像nil最常引用。所以,假設它在本地工作(並且這個SOAP對象確實有一個id方法),你應該得到這個警告的唯一方法是如果它是一種不同類型的對象。

因此,您是否確定您所預期的對象將被退回?嘗試添加:

logger.info ">>> SOAP OBJECT: " + object.inspect 

或者增加一些明確的錯誤處理/對象檢查:

unless object.is_a?(SOAP::Mapping::Object) 
    raise ArgumentError, "did not get SOAP object" 
end 

至少這樣你就知道出了問題。

1

你可能已經習慣了基於ActiveRecord的對象,並且這個對象看起來不像是基於ActiveRecord的。 idsoon to be deprecated,而object_id是一個Ruby對象的方法。

這並不意味着ActiveRecord上的id將被棄用,只是在「普通的舊Ruby對象」上。

+2

因爲我寫我喜歡說話。我是一個可怕的美國人。 – 2010-08-13 05:16:08

相關問題