module Mongoid::Persistable::Destroyable
Defines behavior for persistence operations that destroy documents.
Public Instance Methods
destroy(options = nil)
click to toggle source
Remove the document from the database with callbacks.
@example Destroy a document.
document.destroy
@param [ Hash ] options The options. @option options [ true | false ] :persist Whether to persist
the delete action. Callbacks will still be run even if false.
@option options [ true | false ] :suppress Whether to update
the parent document in-memory when deleting an embedded document.
@return [ true | false ] True if successful, false if not.
# File lib/mongoid/persistable/destroyable.rb, line 23 def destroy(options = nil) raise Errors::ReadonlyDocument.new(self.class) if readonly? self.flagged_for_destroy = true result = run_callbacks(:commit, skip_if: -> { in_transaction? }) do run_callbacks(:destroy) do if catch(:abort) { apply_destroy_dependencies! } delete(options || {}).tap do |res| if res && in_transaction? Threaded.add_modified_document(_session, self) end end else false end end end self.flagged_for_destroy = false result end
destroy!(options = {})
click to toggle source
Remove the document from the database with callbacks. Raises an error if the document is not destroyed.
@example Destroy a document.
document.destroy!
@param [ Hash ] options The options. @option options [ true | false ] :persist Whether to persist
the delete action. Callbacks will still be run even if false.
@option options [ true | false ] :suppress Whether to update
the parent document in-memory when deleting an embedded document.
@raises [ Mongoid::Errors::DocumentNotDestroyed
] Raised if
the document was not destroyed.
@return [ true ] Always true.
# File lib/mongoid/persistable/destroyable.rb, line 59 def destroy!(options = {}) destroy(options) || raise(Errors::DocumentNotDestroyed.new(_id, self.class)) end