Sha256: 612b87110e63e32c679e6ddf83c5cf4f4ea6ae54a782512208813a4cbe9da4ea

Contents?: true

Size: 1.41 KB

Versions: 164

Compression:

Stored size: 1.41 KB

Contents

# encoding: utf-8
module Mongoid #:nodoc:
  module Fields #:nodoc:
    module Internal #:nodoc:

      # Defines the behaviour for boolean fields.
      class Boolean
        include Serializable

        MAPPINGS = {
          true => true,
          "true" => true,
          "TRUE" => true,
          "1" => true,
          1 => true,
          1.0 => true,
          false => false,
          "false" => false,
          "FALSE" => false,
          "0" => false,
          0 => false,
          0.0 => false
        }

        # Special case to serialize the object.
        #
        # @example Convert to a selection.
        #   field.selection(object)
        #
        # @param [ Object ] The object to convert.
        #
        # @return [ Object ] The converted object.
        #
        # @since 2.4.0
        def selection(object)
          return object if object.is_a?(::Hash)
          serialize(object)
        end

        # Serialize the object from the type defined in the model to a MongoDB
        # compatible object to store.
        #
        # @example Serialize the field.
        #   field.serialize(object)
        #
        # @param [ Object ] object The object to cast.
        #
        # @return [ true, false ] The converted boolean.
        #
        # @since 2.1.0
        def serialize(object)
          object = MAPPINGS[object]
          object.nil? ? nil : object
        end
      end
    end
  end
end

Version data entries

164 entries across 72 versions & 3 rubygems

Version Path
mongoid-2.4.3 lib/mongoid/fields/internal/boolean.rb
mongoid-2.4.2 lib/mongoid/fields/internal/boolean.rb
mongoid-2.4.1 lib/mongoid/fields/internal/boolean.rb
mongoid-2.4.0 lib/mongoid/fields/internal/boolean.rb