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 169 def destroy! destroy || raise(ActiveRecord::RecordNotDestroyed) end