This is expected behavior. If you want to explicitly rollback in save fails even if raise_on_save failure is false, you have two options. One is enabling exceptions for that particular save:
DB.transaction do
address.delete
user.save(:raise_on_failure=>true)
end
The second is explicitly rolling back if you detect a save failure:
DB.transaction do
address.delete
raise Sequel::Rollback unless user.save
end
Reference Link to Sequel-Talk Google Groups: https://groups.google.com/forum/#!topic/sequel-talk/Y9NuUUNwfyo