Rails ': timestamp
тип столбца ложный; на самом деле это просто псевдоним для : datetime
.
Я использую mysql и хочу использовать фактические столбцы unix-timestamp TIMESTAMP
.
a) Есть ли хороший способ установить это, кроме простого создания столбца с помощью SQL?
b) Справится ли ActiveRecord с этим должным образом (например, преобразование в Time
при необходимости, принятие временная метка unix Целое число
в качестве входных данных и т. д.)? С какими проблемами мне придется столкнуться и где?
Почему:
Скорость. Это для чрезвычайно активной таблицы, которая объединяет внешние источники данных, которые уже используют временные метки unix. Преобразование в datetime (или даже преобразование сначала в строку db, которая проходит через 2 gsub
s) использует большую часть времени импорта. В противном случае я мог бы сделать просто дешевый вызов Integer # to_s
.
Часовые пояса. Я не хочу их. Я хочу, чтобы он сохранялся без привязки к часовому поясу; Работа с часовыми поясами - это боль и совершенно не имеет отношения к моим потребностям, за исключением самого последнего этапа перед индивидуальным отображением пользователя. Самым данным не нужно знать, в каком часовом поясе они были записаны.
Размер. Это большой стол. TIMESTAMP вдвое меньше DATETIME.
Да, я бы все равно выполнял вычисления updated_at
в коде, а не в mysql. Эта часть не является узким местом.
Почему ваше «почему бы и нет» неверно (предварительно, чтобы показать, что я не прошу по нубическим причинам :-P):
ActiveRecord :: ConnectionAdapters :: AbstractMysqlAdapter # quote
(в Цитата # quoted_date
[при прохождении Time
]] или Mysql2Adapter # quote_string
[при предварительном преобразовании to_s (: db)
]) на самом деле является самым ресурсоемким разделом моего парсера. Я хочу избавиться от этого.