Module: Mongoid::Serialization

Extended by:
ActiveSupport::Concern
Included in:
Components
Defined in:
lib/mongoid/serialization.rb

Overview

This module provides the extra behaviour for including relations in JSON and XML serialization.

Instance Method Summary collapse

Instance Method Details

#serializable_hash(options = nil) ⇒ Hash

Gets the document as a serializable hash, used by ActiveModel’s JSON serializer.

Examples:

Get the serializable hash.

document.serializable_hash

Get the serializable hash with options.

document.serializable_hash(:include => :addresses)

Parameters:

  • options (Hash) (defaults to: nil)

    The options to pass.

Options Hash (options):

  • :include (Symbol)

    What relations to include.

  • :only (Symbol)

    Limit the fields to only these.

  • :except (Symbol)

    Dont include these fields.

  • :methods (Symbol)

    What methods to include.

Returns:

  • (Hash)

    The document, ready to be serialized.

Since:

  • 2.0.0.rc.6



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/mongoid/serialization.rb', line 28

def serializable_hash(options = nil)
  options ||= {}
  attrs = {}

  names = field_names(options)

  _serializing do
    method_names = Array.wrap(options[:methods]).map do |name|
      name.to_s if respond_to?(name)
    end.compact

    (names + method_names).each do |name|
      without_autobuild do
        serialize_attribute(attrs, name, names, options)
      end
    end
    serialize_relations(attrs, options) if options[:include]
  end
  attrs
end