我有两个问题,但我会将它们发布为两个不同的问题。让我们从第一个开始。
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它可以工作。有什么问题,我该如何解决?
答案 0 :(得分:2)
要将方法绑定到类对象,您需要将其定义为self.update_status
,而self
之前的all_created
不是必需的:
class Order < AbstractOrder
def self.update_status
all_created.each do |order|
order.status = :in_progress
order.save
end
end
end