module ActiveRecord::Timestamp

Active Record Timestamp

Active Record automatically timestamps create and update operations if the table has fields named created_at/created_on or updated_at/updated_on.

Timestamping can be turned off by setting:

config.active_record.record_timestamps = false

Timestamps are in the local timezone by default but you can use UTC by setting:

config.active_record.default_timezone = :utc

Time Zone aware attributes

By default, ActiveRecord::Base keeps all the datetime columns time zone aware by executing following code.

config.active_record.time_zone_aware_attributes = true

This feature can easily be turned off by assigning value false .

If your attributes are time zone aware and you desire to skip time zone conversion to the current Time.zone when reading certain attributes then you can do following:

class Topic < ActiveRecord::Base
  self.skip_time_zone_conversion_for_attributes = [:written_on]
end

Public Instance Methods

initialize_dup(other) click to toggle source
Calls superclass method
# File lib/active_record/timestamp.rb, line 40
def initialize_dup(other)
  clear_timestamp_attributes
  super
end

Private Instance Methods

all_timestamp_attributes_in_model() click to toggle source
# File lib/active_record/timestamp.rb, line 86
def all_timestamp_attributes_in_model
  timestamp_attributes_for_create_in_model + timestamp_attributes_for_update_in_model
end
clear_timestamp_attributes() click to toggle source

Clear attributes and changed_attributes

# File lib/active_record/timestamp.rb, line 107
def clear_timestamp_attributes
  all_timestamp_attributes_in_model.each do |attribute_name|
    self[attribute_name] = nil
    changed_attributes.delete(attribute_name)
  end
end
should_record_timestamps?() click to toggle source
# File lib/active_record/timestamp.rb, line 74
def should_record_timestamps?
  self.record_timestamps && (!partial_updates? || changed? || (attributes.keys & self.class.serialized_attributes.keys).present?)
end
timestamp_attributes_for_create_in_model() click to toggle source
# File lib/active_record/timestamp.rb, line 78
def timestamp_attributes_for_create_in_model
  timestamp_attributes_for_create.select { |c| self.class.column_names.include?(c.to_s) }
end
timestamp_attributes_for_update_in_model() click to toggle source
# File lib/active_record/timestamp.rb, line 82
def timestamp_attributes_for_update_in_model
  timestamp_attributes_for_update.select { |c| self.class.column_names.include?(c.to_s) }
end