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 を実行すると、can_submit を評価するため、実際には populate_join_table には入りませんか? 偽として。
私は何が欠けていますか?