2011-03-18 69 views
0

我發現了以下錯誤:NoMethodError:undefined方法 - 如何查找方法?

#<NoMethodError: undefined method `find_it' for #<struct xJob xxxx_id=527>> 

我有一個控制器,它創建了一個delayed_job的如下,在控制器方法的末尾:

xJob.new(@xxxx.id).perform 

然後在/ lib/xJob .rb:

class xJob < Struct.new(:xxxx_id) 

    include ActionView::Helpers 

    def perform 

    begin 
    ....... 
    goodstuff = find_it(stuff) 
    ....... 
    rescue Exception => e 
    ..... 
    end 
    end 

    def self.find_it(body) 
    .... 
    end 

end 

我需要將self添加到self.find_it否則我無法在rspec中測試該方法。但現在它似乎正在突破RSPEC。

想法?謝謝

+0

感謝您的任何提示 – AnApprentice 2011-03-18 22:27:54

回答

2

只需從find_it方法聲明中刪除「self」即可。因爲它在你定義它的時候會變成xJob的類方法,而不是實例方法。

+0

謝謝,然後在我的rspec我有:xxxx = :: xJob :: find_it(東西),如果我刪除自我。那就失敗了。那麼我該怎麼做? – AnApprentice 2011-03-18 21:55:45

+0

RSPEC然後失敗,NoMethodError: 未定義的方法 – AnApprentice 2011-03-18 21:57:01

+1

就用,goodstuff = xJob.find_it(東西),而不是僅僅「goodstuff = find_it(東西)」 – 2011-03-18 22:02:15