Я пытаюсь сохранить datetimes в событиях в MongoDB с Mongoid. Трудность состоит в том, что я хочу сохранить их для разных часовых поясов (например, в Берлине и Лондоне). Я хочу, чтобы пользователь (администратор) видел фактическое время в часовом поясе, так что ему не нужно вычислять. Впоследствии у меня есть задание cron, когда каждый раз, когда каждый процесс просматривается, он смотрит каждую минуту.Rails - Как правильно сохранить даты в MongoID и запускать их с помощью iferver (cronjobs)?
У меня есть следующие параметры:
application.rb (я пытался без -> стандартное UTC -> Лондон нормально, Берлин неправильный час)
config.time_zone = 'Berlin' # as the server stays in Germany
mongoid.yml (пробовал все комбинации, нужно use_activesupport_time_zone, чтобы получить корректные раз не ИНТ ODB хотя)
use_activesupport_time_zone: true
use_utc: false
schedule.rb (никакой проблемы здесь до сих пор)
every 1.minutes do
runner "Event.activate_due", environment: 'development'
end
event.rb (не уверен, что в какое время я ищу в настоящее время)
def self.activate_due
events_due = Event.where(:eventStart.lte => (Time.now + 1.minute), :eventStart.gte => (Time.now))
events_due.each do |e|
e.activate
end
end
Я попытался изменить Time.zone в событиях # новых для того, чтобы изобразить фактическое время часового пояса, в в simple_form. Кажется, что это работает, но затем метод создания контроллера, похоже, снова обрабатывает параметры как стандартный часовой пояс и неправильно его трансформирует (+ 1 час при экспериментировании с Лондоном/Берлином). Я пробовал почти каждую комбинацию параметров, а также Time.now/Time.zone.now. В индексе события # я переключаюсь через time_zones, чтобы показать нужное время.
Чтобы усложнить ситуацию: я сохраняю часовой пояс в модели области, которая связана через areaId с моделью событий.
Как я могу показать администратору в форме правильное время для события в зоне, которую он хочет добавить (а не его часовой пояс), и сохранить его правильно в Mongo, чтобы запустить его через cronjob позже?
Это помогло. Спасибо Основная проблема заключалась в переключении Time.zone, которое произошло после того, как была запущена модель, и уже установленная метка времени. – Luis