timezoneの変更
通常はrailsの表示はutcで、データベースの書き込みもutcで行われる。
表示のみjstにするか、データベースをjstにするかでやり方が変わる。
基本的な考え方は、railsの表示時間とDBに保存する時間の2つ。
加えてDBからviewに出力する際にrailsの表示時間と異なる場合に変換をかませるか。
ここに注意しておけばOK。
db: utc 表示: jst
config/application.rb
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :utc
active_record.defalult_timezoneは書かなくてもutcがデフォルトになる。
views/view.html.erb
created_at.in_time_zone('Tokyo')
in_time_zone(‘Tokyo’)をつけることで表示上+9時間してくれる。
データベースもjstへ変更する。
config/application.rb
config.active_record.default_timezone = :local
(ローカルがjstに設定されていること前提、サーバーがjstである必要あり)
time_zone変更時にデプロイでrake aborted!
requireと同レベルにconfig.time_zoneを書くと、
NameError: undefined local variable or method `config’ for main:Object
が出て困った。
正しくはmodule Projectの中に入れます。以下のように。
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module Project
class Application < Rails::Application
config.generators do |g|
g.stylesheets false
end
config.i18n.default_locale = :ja
config.time_zone = 'Tokyo'
end
end
コメント