rails state_machine с обратным вызовом after_create и проверкой on_update
Я использую камень state_machine в модельном событии.
Исходное состояние события ожидает рассмотрения.
Когда я создаю событие, я хотел бы запустить обратный вызов after_create, чтобы посмотреть, смогу ли я сделать первый переход в зависимости от атрибутов события.
Модель событий также имеет проверку, которая проверяет, не изменились ли определенные атрибуты.
Теперь моя проблема заключается в том, что когда событие state_machine: verify вызывается в обратном вызове after_create, все значения помечаются как измененные с nil на "начальное значение", и переход не может быть выполнен из-за того, что упомянутая проверка не удалась.
Теперь я действительно не понимаю, как это вообще возможно. Как event.changes может вернуть nil => "начальные значения" для всех значений, если это обратный вызов after_create? Мне кажется, что обратный вызов after_create вызывается до того, как событие было сохранено в первый раз. Я ожидал, что он будет сохранен один раз, затем произведет обратный вызов, и тогда только атрибут состояния должен был измениться, когда я вызываю изменения, прежде чем попытаться сохранить свое событие после вызова события verifyiy.
Пример кода:
class Event < ActiveRecord::Base
state_machine :initial => :pending do
...
state :pending
state :verified
...
event :verify do
transition :pending => :verified
end
end
...
validate :validate_some_attributes_did_not_change, :on => :update
after_create :initial_verification_check
...
private
def initial_verification_check
verify! if everything_fine?
end
...
end