En mi application.rb
me 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_zone
al tiempo EST. Sin embargo, aún cuando se crean registros en la base de datos, parece que datetime
se 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_timezone
solo puede tomar dos valoresconfig.time_zone
)Así es como puede encontrar todas las zonas horarias disponibles
fuente
datetime
valores en UTC en la base de datos y luego simplemente cambiarlos en la interfaz como conmoment.js
o qué sugiere para mostrar estos datos en la zona horaria correcta para cualquier usuario?agregando seguidores a las
application.rb
obrasfuente
config.time_zone = 'London'
config.active_record.default_timezone = :local
rails 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_timezone
solo debe establecerse en:local
o:utc
. Supongo que cualquier otra cosa tendría resultados inesperados.rake time:zones:all
Llegué a la misma conclusión que Dean Perry después de mucha angustia.
config.time_zone = 'Adelaide'
yconfig.active_record.default_timezone = :local
fue 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:all
y 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.rb
y 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.rb
archivo 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.rb
Luego reinicie su servidor
fuente