Spec-Zone.ru › Ruby on Rails 5.1

модуль ActiveRecord::Timestamp

Временные метки Active Record

Active Record автоматически ставит временные метки для операций создания и обновления, если в таблице есть поля с именами created_at/created_on или updated_at/updated_on.

Временные метки можно отключить, задав:

config.active_record.record_timestamps = false

Временные метки по умолчанию в формате UTC, но вы можете использовать локальное часовое поясом, задав:

config.active_record.default_timezone = :local

Время Зона, учитывающие атрибуты

Active Record сохраняет все поля datetime и time с учетом часового пояса. По умолчанию эти значения хранятся в базе данных в формате UTC и преобразуются обратно в текущий часовой пояс Time.zone при извлечении из базы данных.

Эту функцию можно полностью отключить, задав:

config.active_record.time_zone_aware_attributes = false

Вы также можете указать, что только поля datetime должны быть учитывающими часовой пояс (в то время как time нет), задав:

ActiveRecord::Base.time_zone_aware_types = [:datetime]

Вы также можете добавить типы базы данных, учитывающие часовой пояс. Например, для PostgreSQL:

ActiveRecord::Base.time_zone_aware_types += [:tsrange, :tstzrange]

Наконец, вы можете указать конкретные атрибуты модели, для которых не должно применяться преобразование часовых поясов, например, задав:

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

Общедоступные методы экземпляров

all_timestamp_attributes_in_model() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 64
def all_timestamp_attributes_in_model
  timestamp_attributes_for_create_in_model + timestamp_attributes_for_update_in_model
end
current_time_from_proper_timezone() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 76
def current_time_from_proper_timezone
  default_timezone == :utc ? Time.now.utc : Time.now
end
timestamp_attributes_for_create() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 68
def timestamp_attributes_for_create
  ["created_at", "created_on"]
end
timestamp_attributes_for_create_in_model() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 56
def timestamp_attributes_for_create_in_model
  timestamp_attributes_for_create.select { |c| column_names.include?(c) }
end
timestamp_attributes_for_update() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 72
def timestamp_attributes_for_update
  ["updated_at", "updated_on"]
end
timestamp_attributes_for_update_in_model() Показать исходный код
# File activerecord/lib/active_record/timestamp.rb, line 60
def timestamp_attributes_for_update_in_model
  timestamp_attributes_for_update.select { |c| column_names.include?(c) }
end

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API