En mi application.rbme encontré con el siguiente comentario
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = 'Eastern Time (US & Canada)'
Como puede ver desde arriba, he llegado config.time_zoneal tiempo EST. Sin embargo, aún cuando se crean registros en la base de datos, parece que datetimese está almacenando en formato UTC.
En el comentario anterior, dicen
... y hacer que Active Record se convierta automáticamente a esta zona ...
¿Cómo puedo hacer eso y dónde?
Además, también desplegaré esto en heroku y me gustaría que la configuración se transfiera
ruby-on-rails
ruby
timezone
rails-activerecord
Omnipresente
fuente
fuente

Respuestas:
He decidido compilar esta respuesta porque todos los demás parecen estar incompletos.
Si desea cambiar la zona horaria de Rails , pero continúa guardando Active Record en la base de datos en UTC , use
Si desea cambiar la zona horaria de Rails Y tener tiempos de almacenamiento de Active Record en esta zona horaria, use
Advertencia : realmente debería pensarlo dos veces, incluso tres veces, antes de ahorrar tiempo en la base de datos en un formato que no sea UTC.
Recuerde que
config.active_record.default_timezonesolo puede tomar dos valoresconfig.time_zone)Así es como puede encontrar todas las zonas horarias disponibles
fuente
datetimevalores en UTC en la base de datos y luego simplemente cambiarlos en la interfaz como conmoment.jso qué sugiere para mostrar estos datos en la zona horaria correcta para cualquier usuario?agregando seguidores a las
application.rbobrasfuente
config.time_zone = 'London'config.active_record.default_timezone = :localrails c-ActiveSupport::TimeZone.all.map(&:name)config.time_zone = 'Central Time (US & Canada)'config.active_record.default_timezone = 'Central Time (US & Canada)'pero establecerlo en: símbolo local hizo el truco.config.active_record.default_timezonesolo debe establecerse en:localo:utc. Supongo que cualquier otra cosa tendría resultados inesperados.rake time:zones:allLlegué a la misma conclusión que Dean Perry después de mucha angustia.
config.time_zone = 'Adelaide'yconfig.active_record.default_timezone = :localfue la combinación ganadora. Esto es lo que encontré durante el proceso.fuente
En mi caso (Rails 5), terminé agregando estas 2 líneas en mi
app/config/environments/development.rb¡Eso es! Y para asegurarme de que Melbourne se leyó correctamente, ejecuté el comando en mi terminal:
bundle exec rake time:zones:ally Melbourne estaba en la zona horaria en la que estoy.
fuente
Si desea establecer la zona horaria en UTC globalmente, puede hacer lo siguiente en Rails 4:
Asegúrese de reiniciar su aplicación o no verá los cambios.
fuente
En los carriles 4.2.2, vaya
application.rby useconfig.time_zone='city'(por ejemplo: 'Londres' o 'Bucarest' o 'Amsterdam' y así sucesivamente).debería funcionar bien. Funcionó para mi.
fuente
Tuve que agregar este bloque a mi
environment.rbarchivo y todo estuvo bien :)Rails.application.initialize!fuente
para usuarios chinos, solo agregue dos líneas a continuación
config/application.rb:fuente
En Ruby on Rails 6.0.1, vaya a config > locales > application.rb y agrega lo siguiente:
Puede ver que estoy configurando la zona horaria con 2 líneas:
Espero que ayude a quienes trabajan con Ruby on Rails 6.0.1
fuente
Si desea establecer la hora local, agregue el siguiente texto en
application.rbLuego reinicie su servidor
fuente