Railsアプリ(ActiveRecordを使用)にAASMで定義されたステートマシンがあり、多くのコールバックがあります。これらのコールバックの一部には、繰り返しコードが含まれています。たとえば、状態が変化するたびに、レコードを作成して保存し、メールを送信する必要があります。
event :revision, after: :revision_event_callback do
# ...
end
event :basic_submit, after: :basic_submit_event_callback do
# ...
end
event :approve, after: :approve_event_callback do
# ...
end
def revision_event_callback
OrderStatusMailer.status_change_report(self, :revision)
state_changes.build(transition: :revision)
end
def basic_submit_event_callback
OrderStatusMailer.status_change_report(self, :basic_submit)
state_changes.build(transition: :basic_submit)
# ...
# basic_submit-specific events
end
def approve_event_callback
OrderStatusMailer.status_change_report(self, :approve)
state_changes.build(transition: :approve)
end
代わりに、汎用コールバックを 1 つ用意し、それが必要なイベント用に特定のコールバックを追加したいと考えています。
def event_callback(event_name)
OrderStatusMailer.status_change_report(self, event_name)
state_changes.build(transition: event_name)
end
def basic_submit_event_callback
# basic_submit-specific events
end
これはまったく可能ですか?そして、非常に重要なことですが、そのコードは、トリガーされたイベントの名前にどのようにアクセスするのでしょうか?