@ksim_miloff

Почему смещается значение Time при сохранении?

Здравствуйте,
Работаю над одним Rails-приложением, в качестве СУБД использую mongoDB через mongoid. Написал свой mongoid-тип для хранения расписания, который хранит несколько Time-значений. Пару месяцев назад была проблема с тем, что при каждом сохранении экземпляра модели, время съезжало соответственно с моим часовым поясом. Гуглил, искал решение, нашел в итоге решил небольшой правкой метода demongoize:
def demongoize(hash)
...
    h[type][:start] = Time.zone.utc_to_local h[type][:start]
    h[type][:end]   = Time.zone.utc_to_local h[type][:end]
...
end

Т.е. данные при сохранении смещались, но я "уравновешивал" это при чтении тем, что смещал их обратно в свою зону.
Вчера обнаружили, что в проекте все Time-значения снова кривые, в этот раз для того, чтобы все работало пришлось закоментировать строки приведенные выше.

Вообще, судя по всему, проблема эта очень частая, в связке rails + mongoid. Мне бы хотелось найти железобетонное решение, которое будет сохранять/возвращать данные в том виде, в котором их посылают в базу. Пожалуйста, помогие найти такое решение. :)
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 1
@chronic86
Ruby on Rails junior
Попробуйте 'mongo_mapper'
Но будьте аккуратнее.

irb(main):001:0> require 'date'
=> true
irb(main):002:0> require 'mongo_mapper'
=> true
irb(main):003:0> Date.to_mongo(Time.now)
=> 2016-10-14 00:00:00 UTC
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы