代码之家  ›  专栏  ›  技术社区  ›  Henry Yang

如何在计算时创建?

  •  0
  • Henry Yang  · 技术社区  · 6 年前

    当我创建一个新的ActiveRecord实例时 created_at

    • 这个时间戳是如何计算的?
    • 时间总是在UTC时区吗?
    1 回复  |  直到 6 年前
        1
  •  5
  •   The Wizard    6 年前

    以下是执行 _create_record

    def _create_record
      if record_timestamps
        current_time = current_time_from_proper_timezone
    
        all_timestamp_attributes_in_model.each do |column|
          if !attribute_present?(column)
            _write_attribute(column, current_time)
          end
        end
      end
    
      super
    end
    

    下面是执行 current_time_from_proper_timezone

    def current_time_from_proper_timezone
          default_timezone == :utc ? Time.now.utc : Time.now
    end
    
    • Time.now.utc )但是,这可以在您的配置中更改 config.active_record.default_timezone = :local (在这种情况下,将使用 Time.now )

    • 时间取决于您的服务器

    • 默认情况下为UTC,但是您可以通过设置

    如果您想查看代码,请点击以下链接: https://github.com/rails/rails/blob/master/activerecord/lib/active_record/timestamp.rb