123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Persistable::Renamable

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ActiveSupport::Concern
Defined in: lib/mongoid/persistable/renamable.rb

Overview

Defines behavior for $rename operations.

Instance Method Summary

Instance Method Details

#rename(renames) ⇒ Document

Note:

This does not work for fields in embeds many associations.

Rename fields from one value to another via $rename.

Examples:

Rename the fields.

document.rename(title: "salutation", name: "nombre")

Parameters:

  • renames (Hash)

    The rename pairs of old name/new name.

Returns:

[ GitHub ]

  
# File 'lib/mongoid/persistable/renamable.rb', line 21

def rename(renames)
  prepare_atomic_operation do |ops|
    process_atomic_operations(renames) do |old_field, new_field|
      new_name = new_field.to_s
      if executing_atomically?
        process_attribute new_name, attributes[old_field]
        process_attribute old_field, nil
      else
        attributes[new_name] = attributes.delete(old_field)
      end
      ops[atomic_attribute_name(old_field)] = atomic_attribute_name(new_name)
    end
    { "$rename" => ops }
  end
end