Module: Mongoid::Copyable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Composable
- Defined in:
- build/mongoid-6.1/lib/mongoid/copyable.rb
Overview
This module contains the behaviour of Mongoid’s clone/dup of documents.
Instance Method Summary collapse
-
#clone ⇒ Document
(also: #dup)
Clone or dup the current
Document
.
Instance Method Details
#clone ⇒ Document Also known as: dup
Clone or dup the current Document
. This will return all attributes with the exception of the document’s id, and will reset all the instance variables.
This clone also includes embedded documents.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'build/mongoid-6.1/lib/mongoid/copyable.rb', line 18 def clone # @note This next line is here to address #2704, even though having an # _id and id field in the document would cause problems with Mongoid # elsewhere. attrs = clone_document.except("_id", "id") dynamic_attrs = {} attrs.reject! do |attr_name, value| dynamic_attrs.merge!(attr_name => value) unless self.attribute_names.include?(attr_name) end self.class.new(attrs).tap do |object| dynamic_attrs.each do |attr_name, value| if object.respond_to?("#{attr_name}=") object.send("#{attr_name}=", value) else object.attributes[attr_name] = value end end end end |