Deletes the record in the database and freezes this instance to reflect that no changes should be made (since they can’t be persisted).
There’s a series of callbacks associated with destroy!. If the before_destroy callback return false the action is cancelled and destroy! raises ActiveRecord::RecordNotDestroyed. See ActiveRecord::Callbacks for further details.
# File activerecord/lib/active_record/persistence.rb, line 184 def destroy! destroy || raise(RecordNotDestroyed.new("Failed to destroy the record", self)) end