module Mongoid::Selectable
Provides behavior for generating the selector for a specific document.
@since 4.0.0
Public Instance Methods
atomic_selector()
click to toggle source
Get the atomic selector for the document. This is a hash in the simplest case { “_id” => id }, but can become more complex for embedded documents and documents that use a shard key.
@example Get the document’s atomic selector.
document.atomic_selector
@return [ Hash ] The document’s selector.
@since 1.0.0
# File lib/mongoid/selectable.rb, line 22 def atomic_selector @atomic_selector ||= (embedded? ? embedded_atomic_selector : root_atomic_selector_in_db) end
Private Instance Methods
embedded_atomic_selector()
click to toggle source
Get the atomic selector for an embedded document.
@api private
@example Get the embedded atomic selector.
document.embedded_atomic_selector
@return [ Hash ] The embedded document selector.
@since 4.0.0
# File lib/mongoid/selectable.rb, line 39 def embedded_atomic_selector if persisted? && _id_changed? _parent.atomic_selector else _parent.atomic_selector.merge("#{atomic_path}._id" => _id) end end
root_atomic_selector_in_db()
click to toggle source
Get the atomic selector that would match the existing version of the root document.
@api private
@return [ Hash ] The root document selector.
@since 4.0.0
# File lib/mongoid/selectable.rb, line 55 def root_atomic_selector_in_db { "_id" => _id }.merge!(shard_key_selector_in_db) end