ここで扱う「バックグラウンドジョブ」は ActiveJob の perform_later のような、一度ジョブキューに入れて、別プロセスが実際の処理を行うようなものの事を指しています。 以下では基本的にバックグラウンドジョブは Sidekiq を例に扱っています。 バックグラウンドジョブと transaction の注意点 class UserMailWorker include Sidekiq::Worker def perform(user_id) user = User.find(user_id) # 送信処理 end end User.transaction do user = User.create!(param) UserMailWorker.perform_async(user.id) # 他の transaction 内でするべき処理など end このコードの問題点は、U