Skip to content

Instantly share code, notes, and snippets.

@elvisgiv
Last active August 29, 2015 14:26
Show Gist options
  • Save elvisgiv/b26e4601a6422bad870b to your computer and use it in GitHub Desktop.
Save elvisgiv/b26e4601a6422bad870b to your computer and use it in GitHub Desktop.

Для того, чтобы выставить время отображения созданных объектов для своей временной зоны нужно:

  • зайти в

    ../config/application.rb

  • найти строку:

    config.time_zone = 'Central Time (US & Canada)'

  • заменить 'Central Time (US & Canada)' на свою зону, которую можно посмотреть здесь: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

  • расхешировать строку со вставленной в нее своей временной зоной

    config.time_zone = 'Europe/Kiev'

  • сохранить изменения

Теперь все создаваемые в базе данных объекты будут показываться в нашем приложении относительно нашей временной зоны. В базе они лежат со временем 'UTC'

Если же у нас много юзеров, которые заходят к нам из разных временных зон, то имеет смысл сделать метод в нашем ActionController (по умолчанию это ApplicationController):

  around_filter :user_time_zone, :if => :current_user
  
  def user_time_zone(&block)
    Time.use_zone(current_user.time_zone, &block)
  end
  
Фильтры "around" ответственны за запуск экшна с помощью yield, подобно тому, как работают промежуточные программы Rack.

Ссылки:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment