我們不斷看到警告信息,如下面,當我們運行我們的規格:Ruby對象#ID警告和活動記錄
對象#ID將被棄用;使用對象#的object_id
有問題的代碼訪問一個ActiveRecord模型的ID(它是在表中的屬性,很明顯的,而不是在Ruby VM對象實例ID)。
有誰知道如何關閉這些特定的警告或以某種方式避免它們?
我們不斷看到警告信息,如下面,當我們運行我們的規格:Ruby對象#ID警告和活動記錄
對象#ID將被棄用;使用對象#的object_id
有問題的代碼訪問一個ActiveRecord模型的ID(它是在表中的屬性,很明顯的,而不是在Ruby VM對象實例ID)。
有誰知道如何關閉這些特定的警告或以某種方式避免它們?
我假設你正在做的嘲諷/磕碰(因爲你提到的規格)。
在我的情況下,當我存根ActiveRecord對象並訪問其ID屬性時,遇到了這些警告。
在您希望訪問的ActiveRecord對象的ID的情況下,我建議你做到以下幾點:
mock("MyActiveRecordObject", :id => 1001)
當一個對象是0123'的後裔時,的呼叫轉到AR :: B的id
方法,而不是Object
上的已棄用的方法。
該警告通常意味着我的一個對象不是我認爲的那樣。
對象#id警告只發生在像NilClass這樣的普通ruby類上。 ActiveRecord :: Base覆蓋對象#id
您的對象實際上不是AR對象,通常表示某些數據檢索失敗(Table.find_by_name('nonexistent name')
將返回nil
)。如果您只想關閉可見的警告,則可以在配置中關閉whiny_nils
,否則請在嘗試訪問對象的屬性並正常處理故障案例之前執行is_a?
測試。
嘗試使用[:id]
代替.id
如果這是一個測試,你確定你所訪問一個真正活躍記錄實體,而不是一個普通的ruby對象? – 2009-03-03 23:46:56
啊......這些很可能是嘲弄的對象 – 2009-03-03 23:51:58
你應該回答這個問題,因爲這完全解決了它。 – 2009-03-04 00:02:59