Module: Mongoid::Fields::Serializable

Extended by:
ActiveSupport::Concern
Included in:
Array, BigDecimal, Binary, Boolean, Date, DateTime, Float, ForeignKeys::Array, ForeignKeys::Object, Hash, Integer, NilClass, Object, ObjectId, Range, Set, String, Symbol, Time, TimeWithZone
Defined in:
lib/mongoid/fields/serializable.rb,
lib/mongoid/fields/serializable/set.rb,
lib/mongoid/fields/serializable/date.rb,
lib/mongoid/fields/serializable/hash.rb,
lib/mongoid/fields/serializable/time.rb,
lib/mongoid/fields/serializable/array.rb,
lib/mongoid/fields/serializable/float.rb,
lib/mongoid/fields/serializable/range.rb,
lib/mongoid/fields/serializable/bignum.rb,
lib/mongoid/fields/serializable/binary.rb,
lib/mongoid/fields/serializable/fixnum.rb,
lib/mongoid/fields/serializable/object.rb,
lib/mongoid/fields/serializable/string.rb,
lib/mongoid/fields/serializable/symbol.rb,
lib/mongoid/fields/serializable/boolean.rb,
lib/mongoid/fields/serializable/integer.rb,
lib/mongoid/fields/serializable/date_time.rb,
lib/mongoid/fields/serializable/nil_class.rb,
lib/mongoid/fields/serializable/object_id.rb,
lib/mongoid/fields/serializable/big_decimal.rb,
lib/mongoid/fields/serializable/timekeeping.rb,
lib/mongoid/fields/serializable/time_with_zone.rb,
lib/mongoid/fields/serializable/foreign_keys/array.rb,
lib/mongoid/fields/serializable/foreign_keys/object.rb

Overview

:nodoc:

Defined Under Namespace

Modules: ClassMethods, ForeignKeys, Timekeeping Classes: Array, BigDecimal, Bignum, Binary, Boolean, Date, DateTime, Fixnum, Float, Hash, Integer, NilClass, Object, ObjectId, Range, Set, String, Symbol, Time, TimeWithZone

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#defaultObject

Set readers for the instance variables.



29
30
31
# File 'lib/mongoid/fields/serializable.rb', line 29

def default
  @default
end

#labelObject

Set readers for the instance variables.



29
30
31
# File 'lib/mongoid/fields/serializable.rb', line 29

def label
  @label
end

#nameObject

Set readers for the instance variables.



29
30
31
# File 'lib/mongoid/fields/serializable.rb', line 29

def name
  @name
end

#optionsObject

Set readers for the instance variables.



29
30
31
# File 'lib/mongoid/fields/serializable.rb', line 29

def options
  @options
end

Instance Method Details

#cast_on_read?true, false

When reading the field do we need to cast the value? This holds true when times are stored or for big decimals which are stored as strings.

Examples:

Typecast on a read?

field.cast_on_read?

Returns:

  • (true, false)

    If the field should be cast.

Since:

  • 2.1.0



40
41
42
43
44
45
46
# File 'lib/mongoid/fields/serializable.rb', line 40

def cast_on_read?
  return @cast_on_read if defined?(@cast_on_read)
  @cast_on_read =
    self.class.public_instance_methods(false).map do |m|
      m.to_sym
    end.include?(:deserialize)
end

#constraintConstraint

Get the constraint from the metadata once.

Examples:

Get the constraint.

field.constraint

Returns:

  • (Constraint)

    The relation’s contraint.

Since:

  • 2.1.0



56
57
58
# File 'lib/mongoid/fields/serializable.rb', line 56

def constraint
  @constraint ||= .constraint
end

#deserialize(object) ⇒ Object

Deserialize this field from the type stored in MongoDB to the type defined on the model

Examples:

Deserialize the field.

field.deserialize(object)

Parameters:

  • object (Object)

    The object to cast.

Returns:

  • (Object)

    The converted object.

Since:

  • 2.1.0



71
# File 'lib/mongoid/fields/serializable.rb', line 71

def deserialize(object); object; end

#eval_default(doc) ⇒ Object

Evaluate the default value and return it. Will handle the serialization, proc calls, and duplication if necessary.

Examples:

Evaluate the default value.

field.eval_default(document)

Parameters:

  • doc (Document)

    The document the field belongs to.

Returns:

  • (Object)

    The serialized default value.

Since:

  • 2.1.8



84
85
86
87
88
89
90
# File 'lib/mongoid/fields/serializable.rb', line 84

def eval_default(doc)
  if default.respond_to?(:call)
    serialize(doc.instance_exec(&default))
  else
    serialize(default.duplicable? ? default.dup : default)
  end
end

#metadataMetadata

Get the metadata for the field if its a foreign key.

Examples:

Get the metadata.

field.

Returns:

  • (Metadata)

    The relation metadata.

Since:

  • 2.2.0



100
101
102
# File 'lib/mongoid/fields/serializable.rb', line 100

def 
  @metadata ||= options[:metadata]
end

#object_id_field?true, false

Is the field a BSON::ObjectId?

Examples:

Is the field a BSON::ObjectId?

field.object_id_field?

Returns:

  • (true, false)

    If the field is a BSON::ObjectId.

Since:

  • 2.2.0



112
113
114
# File 'lib/mongoid/fields/serializable.rb', line 112

def object_id_field?
  @object_id_field ||= (type == BSON::ObjectId)
end

#serialize(object) ⇒ Object

Serialize the object from the type defined in the model to a MongoDB compatible object to store.

Examples:

Serialize the field.

field.serialize(object)

Parameters:

  • object (Object)

    The object to cast.

Returns:

  • (Object)

    The converted object.

Since:

  • 2.1.0



127
# File 'lib/mongoid/fields/serializable.rb', line 127

def serialize(object); object; end

#typeClass

Get the type of this field - inferred from the class name.

Examples:

Get the type.

field.type

Returns:

  • (Class)

    The name of the class.

Since:

  • 2.1.0



137
138
139
# File 'lib/mongoid/fields/serializable.rb', line 137

def type
  @type ||= options[:type] || Object
end

#versioned?true, false

Is this field included in versioned attributes?

Examples:

Is the field versioned?

field.versioned?

Returns:

  • (true, false)

    If the field is included in versioning.

Since:

  • 2.1.0



149
150
151
# File 'lib/mongoid/fields/serializable.rb', line 149

def versioned?
  @versioned ||= (options[:versioned].nil? ? true : options[:versioned])
end