これらはモデルです:
class User < Sequel::Model
self.raise_on_save_failure = false
end
class Addresses < Sequel::Model
many_to_one: user
self.raise_on_save_failure = false
end
address = Addresses.find(id: 1)
user = address.user
DB.transaction do
address.delete
user.save
end
上記のコードで、いくつかの検証が失敗したために user.save が nil を返した場合、トランザクションはロールバックされず、そのアドレスは削除されたままです。
user.save が失敗した場合、address.delete は raise_on_save_failure = false でロールバックされます。
raise_on_save_failure = true の場合、トランザクションはロールバックしますが、true に設定したくありません。