after_commit :do_something, on: [:create, :update, :destroy]
def do_something
# 在这里是否可以知晓,是 ACTIONS = [:create, :destroy, :update] 中的哪个触发的吗?
end
参考如下:
# https://github.com/rails/rails/blob/master/activerecord/lib/active_record/transactions.rb
# Determine if a transaction included an action for :create, :update, or :destroy. Used in filtering callbacks.
def transaction_include_any_action?(actions)
actions.any? do |action|
case action
when :create
persisted? && @_new_record_before_last_commit
when :update
!(@_new_record_before_last_commit || destroyed?) && _trigger_update_callback
when :destroy
_trigger_destroy_callback
end
end
end