Module: Mongoid::Timestamps::Timeless::ClassMethods
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Extended In:
| |
| Defined in: | lib/mongoid/timestamps/timeless.rb |
Instance Attribute Summary
-
#timeless? ⇒ true | false
readonly
Returns whether the current class should skip timestamping.
Instance Method Summary
-
#clear_timeless_option ⇒ true
Removes the timeless option on the current class.
-
#clear_timeless_option_on_update ⇒ true
Sets to remove the timeless option when the next instance of the current class is updated.
-
#set_timeless_counter(counter) ⇒ Integer | nil
Clears the timeless counter for the current class if the value has reached zero.
-
#timeless(&block) ⇒ Object | Class
readonly
Skip timestamping for the duration of the given block, or (in the deprecated, block-less form) for the next persistence operation.
Instance Attribute Details
#timeless? ⇒ true | false (readonly)
Returns whether the current class should skip timestamping. This is true when either a block-based timeless scope is active on the current thread/fiber, or the deprecated per-class counter is set.
Instance Method Details
#clear_timeless_option ⇒ true
Removes the timeless option on the current class.
# File 'lib/mongoid/timestamps/timeless.rb', line 153
def clear_timeless_option if counter = Timeless[name] counter -= 1 set_timeless_counter(counter) end true end
#clear_timeless_option_on_update ⇒ true
Sets to remove the timeless option when the next instance of the current class is updated.
# File 'lib/mongoid/timestamps/timeless.rb', line 165
def clear_timeless_option_on_update return unless counter = Timeless[name] counter -= 1 if self < Mongoid::Timestamps::Created counter -= 1 if self < Mongoid::Timestamps::Updated set_timeless_counter(counter) end
#set_timeless_counter(counter) ⇒ Integer | nil
Clears the timeless counter for the current class if the value has reached zero.
# File 'lib/mongoid/timestamps/timeless.rb', line 180
def set_timeless_counter(counter) Timeless[name] = (counter == 0) ? nil : counter end
#timeless(&block) ⇒ Object | Class (readonly)
Skip timestamping for the duration of the given block, or (in the deprecated, block-less form) for the next persistence operation.
# File 'lib/mongoid/timestamps/timeless.rb', line 128
def timeless(&block) return Timeless.with_timeless(&block) if block locations = caller_locations # if this is called from the #timeless instance method, look up one # level higher for the call site locations.shift if locations[0].path == __FILE__ Mongoid.deprecation_warning( :timeless_sans_block, 'Calling #timeless without a block is deprecated; pass a block ' \ 'instead, e.g. `record.timeless { record.save }`.', locations ) counter = 0 counter += 1 if self < Mongoid::Timestamps::Created counter += 1 if self < Mongoid::Timestamps::Updated Timeless[name] = counter self end