Module: Mongoid::Extensions::Time::ClassMethods
- Defined in:
- lib/mongoid/extensions/time.rb
Instance Method Summary collapse
-
#demongoize(object) ⇒ Time | nil
Convert the object from its mongo friendly ruby type to this type.
-
#mongoize(object) ⇒ Time | nil
Turn the object from the ruby type we deal with to a Mongo friendly type.
Instance Method Details
#demongoize(object) ⇒ Time | nil
Convert the object from its mongo friendly ruby type to this type.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/mongoid/extensions/time.rb', line 41 def demongoize(object) return if object.blank? time = if object.acts_like?(:time) Mongoid::Config.use_utc? ? object : object.getlocal elsif object.acts_like?(:date) ::Date.demongoize(object).to_time elsif object.is_a?(String) begin object.__mongoize_time__ rescue ArgumentError nil end elsif object.is_a?(BSON::Timestamp) ::Time.at(object.seconds) end return if time.nil? time.in_time_zone(Mongoid.time_zone) end |
#mongoize(object) ⇒ Time | nil
Turn the object from the ruby type we deal with to a Mongo friendly type.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/mongoid/extensions/time.rb', line 71 def mongoize(object) return if object.blank? begin time = object.__mongoize_time__ rescue ArgumentError return end if time.acts_like?(:time) if object.respond_to?(:sec_fraction) ::Time.at(time.to_i, object.sec_fraction * 10**6).utc elsif time.respond_to?(:subsec) ::Time.at(time.to_i, time.subsec * 10**6).utc else ::Time.at(time.to_i, time.usec).utc end end end |