質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

4340閲覧

【Rails】DBに保存されるcreated_atの時間が日本時間にならない

yastinbieber

総合スコア49

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1グッド

0クリップ

投稿2020/09/08 01:04

前提・実現したいこと

フォームで内容を送信した際自動でcreated_atにてその投稿時間がDBに記録されるかと思うのですが、その時間が日本時間-9時間となっており困っています。

既に行ったこと

参考サイト
上記を参考にしながら、またテラテイル内での同様の質問を参考にしながら日付周りの修正は行ってみました。

##config/application.rb require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Toreka class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 5.2 # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files in config/initializers # -- all .rb files in that directory are automatically loaded after loading # the framework and any gems in your application. config.i18n.default_locale = :ja config.time_zone = "Tokyo" config.active_record.default_timezone = :local end end

sql

1[1] pry(main)> Time.current 2=> Tue, 08 Sep 2020 09:30:03 JST +09:00

上記の設定によりUTCからJSTにタイムゾーンの設定を行うことができたのですが、
依然created_atやupdate_at等の時刻表示が-9時間のままです。

多くのサイトではビューをいじるようなことが記述されておりましたが、
特にビューでcreated_at等の時刻を表示したいわけではなく、DBに正しい時刻情報を記録したいです。

上記おわかりの方ご教授いただけますと幸いです。
また必要なコード等ございましたらおっしゃってください。

補足情報(FW/ツールのバージョンなど)

Rails 5.2.4.3
ruby 2.5.1

necocoa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

DB側の設定がUTCになっているかもしれません。
rails dbコマンドを打つとDBにログインできるので、
PostgreSQLなら show timezone;
MySQLなら show variables like '%time_zone%'; で確認できるようです。
これらの結果がAsia/TokyoやJSTになっているか確認してみてください。

Railsのタイムゾーンを変更する内容はこちらの記事が参考になります。
https://qiita.com/aosho235/items/a31b895ce46ee5d3b444

投稿2020/09/08 02:36

編集2020/09/08 02:42
necocoa

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yastinbieber

2020/09/08 08:03

ご回答ありがとうございます。 当方MySQLを使用しておりお教えいただいたコードをうち確認したところ やはりDB側の設定がUTCになっているようでした。 +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | SYSTEM | +------------------+--------+ また参考にといただいたURLも確認させていただいたのですが、 PostgreSQL用のコードのみの記載だったため具体的にどのように入力すればJSTになるかわかっていないような状況です。 他参考になりそうなサイトも確認してみましたが解決にはつながっていません。 もし可能でしたら再度ご教示いただけますと幸いです。
yastinbieber

2020/09/08 10:28

新たな情報提供ありがとうございます。 現状my.cnfの箇所で理解が乏しいため手が止まってしまっていますが行うべきアクションの理解はできましたので一旦解決とさせていただきます。 再度進めなそうでしたら新たに質問させてください。 今後とも宜しくお願い致します。
necocoa

2020/09/08 11:14

ありがとうございます、応援してます!
guest

0

require 'rails/all'を始めてみたので調べてみたところ下記の記事が見つかりましたので情報共有します。

https://stackoverflow.com/questions/32916766/why-is-require-rails-all-not-installed-required-in-my-config-application-rb


require 'rails/all'をつかわずに1行1行書いたほうがいいよということでした。


Rails6でRails newを実行した場合の内容は下記となりますので一度下記に差し替えて、サーバーを再起動してから、動作確認してみてはいかがでしょうか?

require_relative 'boot' require "rails" # Pick the frameworks you want: require "active_model/railtie" require "active_job/railtie" require "active_record/railtie" require "active_storage/engine" require "action_controller/railtie" require "action_mailer/railtie" require "action_mailbox/engine" require "action_text/engine" require "action_view/railtie" require "action_cable/engine" require "sprockets/railtie" # require "rails/test_unit/railtie" # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups)

投稿2020/09/08 01:34

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yastinbieber

2020/09/08 10:28

いつもありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問