Ruby on rails 为什么在以下情况下我会得到缺少的方法?

Ruby on rails 为什么在以下情况下我会得到缺少的方法?,ruby-on-rails,Ruby On Rails,我有两个问题,但我会把它们作为两个不同的问题发布。让我们从第一个开始 class Order < AbstractOrder def update_status self.all_created.each do |order| order.status = :in_progress order.save end end end 类顺序

我有两个问题,但我会把它们作为两个不同的问题发布。让我们从第一个开始

class Order < AbstractOrder        
  def update_status
    self.all_created.each do |order|
       order.status = :in_progress    
       order.save
    end  
  end    
end
类顺序
在我试着打电话的时候

Order.update\u状态

我得到一个错误,说:

    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\u状态
命名错误:
未定义的方法“更新\u状态”#
#./spec/models/order_spec.rb:17:in'block(3层)in'
以0.10439秒完成
3例,1例失败

为什么??我认为这是一个类方法而不是实例方法。如果我创建一个订单并执行order.update\u status,它就会工作。有什么问题,如何修复?

要将该方法绑定到类对象,需要将其定义为
self.update\u status
,而
之前创建的所有
self
应该是不必要的:

class Order < AbstractOrder        
  def self.update_status
    all_created.each do |order|
       order.status = :in_progress    
       order.save
    end  
  end    
end
类顺序
我必须把这归咎于疲劳,即使在阅读了关于这个问题的多个答案后,我也认为情况恰恰相反。真不敢相信我把它搞混了。。。