Создан ли он в Rails по умолчанию Time.now.utc.to_date? - PullRequest
0 голосов
/ 25 января 2019

Когда Rails создает активную запись и вставляет ее, значение created_at практически совпадает с Time.now.utc.to_date?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Если вы имели в виду to_date, то нет, в худшем случае это может быть почти 24 часа.

Если вы имели в виду to_datetime, то я думаю, что это будет то же самое для второго. Но учтите, что если вы позвоните Time.now непосредственно до или после создания записи, она может не совпадать со второй. Мне любопытно узнать, почему вам нужно конвертировать в DateTime.

Просто проверьте это сами (скажем, ваш класс AR Post):

dtm_before = Time.now.to_datetime
post = Post.create!(attributes)
dtm_after = Time.now.to_datetime  # zone does not matter!
# these differences should be tiny
dtm_before.to_time - post.created_at
dtm_after.to_time - post.created_at

Я сказал, что зона не имеет значения, потому что, когда вы делаете арифметику времени, зоны автоматически учитываются. Пример:

# let's assume your local TZ-offset isn't zero
t = Time.now
t == t.getutc   # true
t - t.getutc  # 0.0 (these are the exact same instant)
0 голосов
/ 25 января 2019

В большинстве случаев да, но это зависит от параметра конфигурации часового пояса по умолчанию.

ActiveRecord::Timestamp код:

def current_time_from_proper_timezone
  default_timezone == :utc ? Time.now.utc : Time.now
end

Вы можете изменить настройку часового пояса в:

config.active_record.time_zone_aware_attributes = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...