lib/mongoid/equality.rb
# encoding: utf-8
module Mongoid
# This module contains the behaviour of Mongoid's clone/dup of documents.
module Equality
# Default comparison is via the string version of the id.
#
# @example Compare two documents.
# person <=> other_person
#
# @param [ Document ] other The document to compare with.
#
# @return [ Integer ] -1, 0, 1.
#
# @since 1.0.0
def <=>(other)
attributes["_id"].to_s <=> other.attributes["_id"].to_s
end
# Performs equality checking on the document ids. For more robust
# equality checking please override this method.
#
# @example Compare for equality.
# document == other
#
# @param [ Document, Object ] other The other object to compare with.
#
# @return [ true, false ] True if the ids are equal, false if not.
#
# @since 1.0.0
def ==(other)
self.class == other.class &&
attributes["_id"] == other.attributes["_id"]
end
# Performs class equality checking.
#
# @example Compare the classes.
# document === other
#
# @param [ Document, Object ] other The other object to compare with.
#
# @return [ true, false ] True if the classes are equal, false if not.
#
# @since 1.0.0
def ===(other)
other.class == Class ? self.class === other : self == other
end
# Delegates to ==. Used when needing checks in hashes.
#
# @example Perform equality checking.
# document.eql?(other)
#
# @param [ Document, Object ] other The object to check against.
#
# @return [ true, false ] True if equal, false if not.
#
# @since 1.0.0
def eql?(other)
self == (other)
end
end
end