Поля метки времени ActiveModel:откуда временная метка?

StackOverflow https://stackoverflow.com/questions/1883872

Вопрос

В модели Rail, когда запись добавляется/обновляется, указывается ли временная метка по часам на сервере рельсов или на сервере базы данных?

Это было полезно?

Решение

Быстрый ответ Исходный код Rails показывает, что это время сервера Rails, возвращаемое Ruby Time.now метод:

private
  def create_with_timestamps #:nodoc:
    if record_timestamps
      current_time = current_time_from_proper_timezone

      write_attribute('created_at', current_time) if respond_to?(:created_at) && created_at.nil?
      write_attribute('created_on', current_time) if respond_to?(:created_on) && created_on.nil?

      write_attribute('updated_at', current_time) if respond_to?(:updated_at) && updated_at.nil?
      write_attribute('updated_on', current_time) if respond_to?(:updated_on) && updated_on.nil?
    end

    create_without_timestamps
  end

  def update_with_timestamps(*args) #:nodoc:
    if record_timestamps && (!partial_updates? || changed?)
      current_time = current_time_from_proper_timezone

      write_attribute('updated_at', current_time) if respond_to?(:updated_at)
      write_attribute('updated_on', current_time) if respond_to?(:updated_on)
    end

    update_without_timestamps(*args)
  end

  def current_time_from_proper_timezone
    self.class.default_timezone == :utc ? Time.now.utc : Time.now
  end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top