Module: Mongoid::Serializable

Extended by:
ActiveSupport::Concern
Included in:
Composable
Defined in:
lib/mongoid/serializable.rb

Overview

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

Since:

  • 4.0.0

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


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/mongoid/serializable.rb', line 37

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

  names = field_names(options)

  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]
  attrs
end