2011-02-04 59 views
0

我有兩個問題,但我會發布他們作爲2個不同的問題。我們從第一個開始。爲什麼在以下情況下會丟失方法?

class Order < AbstractOrder   
    def update_status 
    self.all_created.each do |order| 
     order.status = :in_progress  
     order.save 
    end 
    end  
end 

在我的規格,當我嘗試打電話

Order.update_status

我得到一個錯誤說:

Failure/Error: Order.update_status 
    NoMethodError: 
     undefined method `update_status' for #<Class:0x00000103f256a8> 
    # ./spec/models/order_spec.rb:17:in `block (3 levels) in <top (required)>' 

Finished in 0.10439 seconds 
3 examples, 1 failure 

爲什麼?我認爲這是一種類方法而不是實例方法。如果我創建訂單並執行order.update_status,它就可以工作。什麼是錯的,我該如何解決它?

回答

2

要綁定的方法,你需要將其定義爲self.update_status類對象,而selfall_created不應該是必要的:

class Order < AbstractOrder   
    def self.update_status 
    all_created.each do |order| 
     order.status = :in_progress  
     order.save 
    end 
    end  
end 
+0

我必須厭倦責怪這個,我以爲是甚至在閱讀了關於這個問題的多個答案之後。不敢相信我把它弄混了... – mhenrixon 2011-02-04 22:28:25

相關問題