Module: Mongoid::Fields::ClassMethods

Defined in:
lib/mongoid/fields.rb

Instance Method Summary (collapse)

Instance Method Details

- (Array<String>) attribute_names

Returns an array of names for the attributes available on this object.

Provides the field names in an ORM-agnostic way. Rails v3.1+ uses this meathod to automatically wrap params in JSON requests.

Examples:

Get the field names

Model.attribute_names

Returns:

  • (Array<String>)

    The field names

Since:

  • 3.0.0



176
177
178
# File 'lib/mongoid/fields.rb', line 176

def attribute_names
  fields.keys
end

- (Field) field(name, options = {})

Defines all the fields that are accessible on the Document For each field that is defined, a getter and setter will be added as an instance method to the Document.

Examples:

Define a field.

field :score, :type => Integer, :default => 0

Parameters:

  • name (Symbol)

    The name of the field.

  • options (Hash) (defaults to: {})

    The options to pass to the field.

Options Hash (options):

  • :type (Class)

    The type of the field.

  • :label (String)

    The label for the field.

  • :default (Object, Proc)

    The field's default

Returns:

  • (Field)

    The generated field



195
196
197
198
199
200
201
202
203
# File 'lib/mongoid/fields.rb', line 195

def field(name, options = {})
  named = name.to_s
  check_field_name!(name)
  added = add_field(named, options)
  descendants.each do |subclass|
    subclass.add_field(named, options)
  end
  added
end

- (Object) inherited(subclass)

When inheriting, we want to copy the fields from the parent class and set the on the child to start, mimicking the behaviour of the old class_inheritable_accessor that was deprecated in Rails edge.

Examples:

Inherit from this class.

Person.inherited(Doctor)

Parameters:

  • subclass (Class)

    The inheriting class.

Since:

  • 2.0.0.rc.6



215
216
217
218
219
# File 'lib/mongoid/fields.rb', line 215

def inherited(subclass)
  super
  subclass.fields, subclass.pre_processed_defaults, subclass.post_processed_defaults =
    fields.dup, pre_processed_defaults.dup, post_processed_defaults.dup
end

- (Serializable) replace_field(name, type)

Replace a field with a new type.

Examples:

Replace the field.

Model.replace_field("_id", String)

Parameters:

  • name (String)

    The name of the field.

  • type (Class)

    The new type of field.

Returns:

  • (Serializable)

    The new field.

Since:

  • 2.1.0



232
233
234
235
# File 'lib/mongoid/fields.rb', line 232

def replace_field(name, type)
  remove_defaults(name)
  add_field(name, fields[name].options.merge(type: type))
end

- (true, false) using_object_ids?

Convenience method for determining if we are using BSON::ObjectIds as our id.

Examples:

Does this class use object ids?

person.using_object_ids?

Returns:

  • (true, false)

    If the class uses BSON::ObjectIds for the id.

Since:

  • 1.0.0



246
247
248
# File 'lib/mongoid/fields.rb', line 246

def using_object_ids?
  fields["_id"].object_id_field?
end