123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Attributes::ClassMethods

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Extended In:
Defined in: lib/mongoid/attributes.rb

Instance Method Summary

Instance Method Details

#alias_attribute(name, original)

Alias the provided name to the original field. This will provide an aliased getter, setter, existence check, and all dirty attribute methods.

Examples:

Alias the attribute.

class Product
  include Mongoid::Document
  field :price, :type => Float
  alias_attribute :cost, :price
end

Parameters:

  • name (Symbol)

    The new name.

  • original (Symbol)

    The original name.

[ GitHub ]

  
# File 'lib/mongoid/attributes.rb', line 325

def alias_attribute(name, original)
  aliased_fields[name.to_s] = original.to_s

  alias_method name, original
  alias_method "#{name}=", "#{original}="
  alias_method "#{name}?", "#{original}?"
  alias_method "#{name}_change", "#{original}_change"
  alias_method "#{name}_changed?", "#{original}_changed?"
  alias_method "reset_#{name}!", "reset_#{original}!"
  alias_method "reset_#{name}_to_default!", "reset_#{original}_to_default!"
  alias_method "#{name}_was", "#{original}_was"
  alias_method "#{name}_will_change!", "#{original}_will_change!"
  alias_method "#{name}_before_type_cast", "#{original}_before_type_cast"
end

#unalias_attribute(name)

Removes a field alias.

Parameters:

  • name (Symbol)

    The aliased field name to remove.

[ GitHub ]

  
# File 'lib/mongoid/attributes.rb', line 343

def unalias_attribute(name)
  unless aliased_fields.delete(name.to_s)
    raise AttributeError, "Field #{name} is not an aliased field"
  end

  remove_method name
  remove_method "#{name}="
  remove_method "#{name}?"
  remove_method "#{name}_change"
  remove_method "#{name}_changed?"
  remove_method "reset_#{name}!"
  remove_method "reset_#{name}_to_default!"
  remove_method "#{name}_was"
  remove_method "#{name}_will_change!"
  remove_method "#{name}_before_type_cast"
end