Условная проверка с помощью state_machine

Я использую state_machine для создания многоступенчатой ​​формы с полями для каждого шага, проверяемыми перед переходом к следующему step.

Это моя модель:

class Foo < ActiveRecord::Base
  state_machine :initial => :step1 do
    event :next do
      transition :step1 => :step2
      transition :step2 => :step3
    end
    event :previous do
      transition :step3 => :step2
      transition :step2 => :step1
    end

    state :step1 do 
      validates_presence_of :field1
    end
    state :step2 do 
      validates_presence_of :field2
    end
    state :step3 do 
      validates_presence_of :field3
    end
  end  
end

Однако это не работает должным образом:

> f = Foo.new
=> #

Foo инициализируется с состоянием 'step1'. Пока все хорошо.

> f.next
=> false

Переход к следующему шагу не выполняется из-за проверки, как и ожидалось.

> f.errors.full_messages 
=> ["Field2 can't be blank"]

Однако, когда я проверяю наличие ошибок проверки, это не «Поле1», которое не прошло проверку, как ожидалось, а скорее «Поле2». Похоже, что выполняется проверка состояния, в которое осуществляется переход, а не текущего состояния.

Что я делаю не так?

Большое спасибо. Он показывает сообщения журнала (в цвете! :), и это здорово. Но при таком большом количестве информации в консоли шириной 80 становится трудно ...

Я использую tail -f для отображения файла журнала при разработке моего приложения Rails. Он показывает сообщения журнала (в цвете! :), и это здорово.

Но при таком большом количестве информации в консоли шириной 80 становится трудно отследить, где начинается определенный "набор" сообщений журнала, когда, скажем, Я нажал кнопку, чтобы ПОЛУЧИТЬ ресурс.

Было бы проще, если бы в начале каждого сообщения / строки журнала был номер строки или даже отметка времени. Таким образом, я мог вспомнить, что мне нужно начать просмотр журнала «после строки номер 2365» или «после 2010/10/10 23: 33: 23: 45».

Возможно ли это сделать? Есть ли для этого какая-то внутренняя опция Rails?

6
задан Zabba 11 January 2011 в 09:57
поделиться