Здравствуйте,
Работаю над одним 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. Мне бы хотелось найти железобетонное решение, которое будет сохранять/возвращать данные в том виде, в котором их посылают в базу. Пожалуйста, помогие найти такое решение. :)