Почему я теряю метод в следующей ситуации? - PullRequest
0 голосов
/ 05 февраля 2011

У меня две проблемы, но я опубликую их как 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, он работает. Что не так и как мне это исправить?

1 Ответ

2 голосов
/ 05 февраля 2011

Чтобы привязать метод к объекту класса, вам нужно определить его как 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...