https://blog.bearandgiraffe.com/rails-email-previews-e2c7b79839a0
上記のようなPreview内でロールバックする実装でいけるのかと思ったのですが、自分の手元ではどうもロールバックできなかったです。
多分これでいいんじゃないかなーと思うんだけど、やったことを残しておくために一応エントリ作っておく。もしも上手く動かなかったら教えてください。手元ではいい感じに思っています。下記のクラスを基底にすればいけると思う。
class BasePreview < ActionMailer::Preview
# メールのプレビューを作る際に作ったDB内の情報はロールバックする
def self.call(email)
ret = nil
ActiveRecord::Base.transaction do
ret = super
raise ActiveRecord::Rollback
end
ret
end
end