RubyonRailsアプリケーションがあります。
オブジェクトの状態を管理するためにRubyのaasmgemを使用しています。
has_state
aasm do
state :created, :initial => true
state :submitted
state :rejected
state :approved
event :submit do
transitions :to => :submitted, :from => [:created]
end
event :mark_as_incomplete do
transitions :to => :created, :from => [:submitted]
end
event :approve do
transitions :to => :approved, :from => [:submitted]
end
event :reject do
transitions :to => :rejected, :from => [:submitted]
end
end
オブジェクトの現在の状態がわかっている場合は、
object.aasm_current_state
また、遷移する状態もわかっていますが、どのようにイベントを呼び出すことができますか?
from-stateとto-stateは変数であるため、上記を動的に行う必要があることに注意してください。もちろん、特定の状態への組み合わせと状態からの組み合わせでは、遷移は使用できません。その場合、エラーを検出する必要があります。
また、任意の2つの状態の組み合わせ(to-stateとfrom-state)の間で、イベントは1つだけであると想定しています。理論的には、1つ以上存在する可能性があると思います。
これは、aasmソースコードの内部を掘り下げることで達成できると思いますが、これはおそらく良い習慣ではないかもしれません。何かご意見は?
誰かが以前にこれをしたことがあるかどうかだけ疑問に思います。
ありがとう!