123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Extensions::Date::ClassMethods

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Extended In:
Defined in: lib/mongoid/extensions/date.rb

Instance Method Summary

Instance Method Details

#demongoize(object) ⇒ Date | nil

Convert the object from its mongo friendly ruby type to this type.

Examples:

Demongoize the object.

Date.demongoize(object)

Parameters:

  • object (Time)

    The time from Mongo.

Returns:

  • (Date | nil)

    The object as a date or nil.

[ GitHub ]

  
# File 'lib/mongoid/extensions/date.rb', line 44

def demongoize(object)
  return if object.nil?
  if object.is_a?(String)
    object = begin
      object.__mongoize_time__
    rescue ArgumentError
      nil
    end
  end

  if object.acts_like?(:time) || object.acts_like?(:date)
    ::Date.new(object.year, object.month, object.day)
  end
end

#mongoize(object) ⇒ Time | nil

Turn the object from the ruby type we deal with to a Mongo friendly type.

Examples:

Mongoize the object.

Date.mongoize("2012-1-1")

Parameters:

  • object (Object)

    The object to mongoize.

Returns:

  • (Time | nil)

    The object mongoized or nil.

[ GitHub ]

  
# File 'lib/mongoid/extensions/date.rb', line 68

def mongoize(object)
  return if object.blank?
  begin
    if object.is_a?(String)
      # https://jira.mongodb.org/browse/MONGOID-4460
      time = ::Time.parse(object)
    elsif object.respond_to?(:__mongoize_time__)
      time = object.__mongoize_time__
    else
      nil
    end
  rescue ArgumentError
    nil
  end
  if time.acts_like?(:time)
    ::Time.utc(time.year, time.month, time.day)
  end
end