временные метки в рельсах - дата или время UNIX? - PullRequest
2 голосов
/ 08 июля 2011

В настоящее время я представлял проект своему профессору в университете, и ему не понравилось, что мое приложение rails использовало DATETIME для хранения своих временных меток в базе данных (он все равно не знает или, похоже, не любит rails :).Он сказал, что это приведет к проблемам из-за разных часовых поясов, и я должен сохранить его как временные метки UNIX (целые числа) в базе данных.

Теперь я полагаю, что у людей, которые проектировали рельсы, была причина хранить это таки поскольку поля меток времени добавляются автоматически при любой миграции, я хотел бы спросить вас, ребята

a), могу ли я изменить миграции по умолчанию для rails, чтобы использовать метку времени UNIX по умолчанию

b)о плюсах и минусах этого подхода

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Мое мнение противоречит мнению вашего профессора.С Rails легко правильно обрабатывать типы Datetime и проблемы с часовыми поясами.

a) Я не уверен насчет изменения значения по умолчанию, но вот связанный вопрос. Ruby on Rails: почему ActiveRecord использует тип "datetime" вместо "timestamp" для полей timestamp? b) Вот связанный вопрос с хорошим ответом. В Ruby on Rails, в чем разница между DateTime, Timestamp, Time и Date?

1 голос
/ 08 июля 2011

Rails 2.2 и более поздние версии поддерживают i18n (Интернационализация) из коробки.Это включает в себя обработку часовых поясов и форматирование даты и времени в базе данных, а также представления.Взгляните на руководство по рельсам для API интернационализации здесь .

В частности, вы, вероятно, будете искать помощников по времени.Я бы рекомендовал убедиться, что вы храните DATETIMES в формате UTC в БД, а затем с помощью помощников по времени переведите его в правильное время для локали вашего конечного пользователя.

Укажите часовой пояс в / config/application.rb и если вы используете правильных Time помощников, Rails позаботится обо всем остальном для вас.

...