В Ruby on Rails недетерминированные данные возвращаются из БД? - PullRequest
0 голосов
/ 04 апреля 2011

Я попробовал строку:

last_item = Item.last
last_item.created_at.strftime('%Y-%m-%d')

и SQL в журнале консоли:

SELECT "items".* FROM "items" ORDER BY items.id DESC LIMIT 1

НО иногда я получаю 2011-04-03, а иногда 2011-04-04

это действительно странно. Если я распечатываю тайм-аут, это

вс, 03 апр. 2011 17:58:48 UTC +00: 00

что дает Rails 3 (3.0.5) такое недетерминированное поведение? Это часовой пояс? Но я нажимаю «Обновить» в браузере, и в этот раз он показывает 04-03, а в следующий раз - 04-04, не перезагружая сервер и не меняя конфигурационный файл или исходный код.


Обновление: Дальнейшая отладка показывает, что если это 04-04, то время, напечатанное с помощью p last_item.created_at, равно:

Пн, 04 Апр. 2011 01:58:48 HKT +08: 00

но у меня есть эта строка в представлении:

- Time.zone = 'Hong Kong'

но last_item.created_at.strftime('%Y-%m-%d') было сделано в контроллере. Так что не должен ли сначала работать контроллер, и, на мой взгляд, я просто пытаюсь напечатать его, используя другой часовой пояс ... также, почему он иногда становится UTC, а иногда HKT?

1 Ответ

1 голос
/ 04 апреля 2011

Я думаю, что установка часового пояса в представлении может вызвать это недетерминированное поведение. Попробуйте установить часовой пояс где-нибудь в каталоге config, возможно, в config/application.rb.

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