这些是模型:
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 失败,是否有可能在 raise_on_save_failure = false 处回滚 address.delete。
如果 raise_on_save_failure = true 但不想将其设置为 true,则事务会回滚。