У меня есть модель, которая использует state_machine для управления различными состояниями. Одно конкретное событие требует before_transition, так как ему нужно создать таблицу соединения перед выполнением перехода. К сожалению, это не работает.
class DocumentSet < ActiveRecord::Base
state_machine :state, :initial => :draft do
# Callbacks
before_transition :on=>:submit, :do=>:populate_join_table
# States
state :draft
state :submitted
# Events
event :submit do transition :draft=>:submitted, :if=>:can_submit? end
end
def populate_join_table
puts '::::::::: INSIDE POPULATE_JOIN_TABLE'
end
def can_submit?
raise "Document Set has no Document(s)" if self.document_versions.blank?
true
end
Теперь, когда я делаю DocumentSet.submit, он фактически никогда не входит в populate_join_table, так как он оценивает can_submit? как ложь.
Чего мне не хватает?