J'ai un modèle qui s'appuie sur state_machine pour gérer ses différents états. Un événement particulier nécessite un before_transition car il doit construire une table de jonction avant d'effectuer la transition. Malheureusement, cela ne fonctionne pas.
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
Maintenant, quand je fais DocumentSet.submit, il n'entre jamais dans la table populate_join_table car il évalue le can_submit ? comme faux.
Qu'est-ce que je rate ?