46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
|
|
# encoding: utf-8
|
||
|
|
require "mongoid/timestamps/updated/short"
|
||
|
|
|
||
|
|
module Mongoid
|
||
|
|
module Timestamps
|
||
|
|
# This module handles the behaviour for setting up document updated at
|
||
|
|
# timestamp.
|
||
|
|
module UpdatedInt
|
||
|
|
extend ActiveSupport::Concern
|
||
|
|
|
||
|
|
included do
|
||
|
|
include Mongoid::Timestamps::Timeless
|
||
|
|
|
||
|
|
field :updated_at, type: Integer
|
||
|
|
set_callback :create, :before, :set_updated_at
|
||
|
|
set_callback :update, :before, :set_updated_at
|
||
|
|
end
|
||
|
|
|
||
|
|
# Update the updated_at field on the Document to the current time.
|
||
|
|
# This is only called on create and on save.
|
||
|
|
#
|
||
|
|
# @example Set the updated at time.
|
||
|
|
# person.set_updated_at
|
||
|
|
def set_updated_at
|
||
|
|
if able_to_set_updated_at?
|
||
|
|
self.updated_at = Time.now.utc.to_i unless updated_at_changed?
|
||
|
|
end
|
||
|
|
|
||
|
|
clear_timeless_option
|
||
|
|
end
|
||
|
|
|
||
|
|
# Is the updated timestamp able to be set?
|
||
|
|
#
|
||
|
|
# @example Can the timestamp be set?
|
||
|
|
# document.able_to_set_updated_at?
|
||
|
|
#
|
||
|
|
# @return [ true, false ] If the timestamp can be set.
|
||
|
|
#
|
||
|
|
# @since 2.4.0
|
||
|
|
def able_to_set_updated_at?
|
||
|
|
!frozen? && !timeless? && (new_record? || changed?)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|