2012-12-17 50 views
1

我繼承了一個ActiveRecord模型給我奇怪的行爲的項目。迄今爲止,這是迄今爲止唯一以這種方式行事的模式。爲什麼這個對象respond_to:each object.method(:each)引發一個錯誤

car = Car.first 
car.respond_to?(:each) # true 

有一個在Car沒有定義each方法,我可以找到。

another post閱讀,你可以找出誰注入的方法,所以我給它一個鏡頭:

car.method(:each) # raises "undefined method `each' for class `Car' 

我想用Cardraper而是因爲我的實例的行爲像一個可枚舉,布店對待它是這樣的。然而,Draper不是問題。

我該怎麼做才能弄明白?

+0

發佈您的'車型'代碼。 –

+0

不幸的是,我不能發佈沒有編輯大部分內容(這可能會破壞目的),因爲我不允許。有另外一種方法可以找出答案嗎?無論如何,這是一個相當大的模型,1,286條線。 –

+4

那麼'respond_to?'可以被覆蓋,並且通常是爲了讓類在method_missing面前表現一致,但這只是一種可能的機制,而不是解釋。沒有代碼,我們可以做的事情就不多了。 –

回答

0

對我的問題的評論幫我找到了!我用德米特里的二進制搜索來找出造成它的原因,並發現模型正在使用的gem中的問題。寶石,馬克裏德,覆蓋respond_to。所以,教訓是:如果responds_to是時髦的,也許它在某處被覆蓋。

相關問題