Ну, в конце концов, самый простой способ, который я нашел, - это связать камень ar_transaction_changes . Этот драгоценный камень сохраняет изменения записи в транзакции и позволяет мне фильтровать мои обратные вызовы следующим образом:
# only kick off job if the update is not due to a touch
after_commit :kickoff_job, on: :update, unless: -> { transaction_changed_attributes.keys == ['updated_at'] }
таким образом, обратный вызов не выполняется, если after_commit
является результатом простого прикосновения.