ActionMailer::Prevew を利用してプレビューする際に、途中で作ったDB内の情報をロールバックする

More than 1 year has passed since last update.

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