Я использую 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?