未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

Ruby on Rail チュートリアルでのエラー

諸事情により、チュートリアルで使用するデータベースにMySQLを使用していました。
厳密にこれが原因であったのかどうかまで調査していませんが、備忘録もかねて記載しておきます。

第11章アカウントの有効化

「11.1.2 AccountActivationのデータモデル」を作成し、最後の演習にて「本項での変更を加えた後、テストスイートが green のままになっていることを確認してみましょう。」とあったのでテストを実行してみると、なんと「RED!!!!」。
下記のエラーが大量発生です。

ERROR["test_should_redirect_destroy_when_not_logged_in", UsersControllerTest, 1.6888076740015094]
 test_should_redirect_destroy_when_not_logged_in#UsersControllerTest (1.69s)
ActiveRecord::StatementInvalid:         ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect datetime value: '2019-08-28 04:45:57 UTC' for column 'activated_at' at row 1: INSERT INTO `users` (`name`, `email`, `password_digest`, `admin`, `activated`, `activated_at`, `created_at`, `updated_at`, `id`) VALUES ('Michael Example', 'michael@example.com', '$2a$04$qZFF.lkhI3cN/OV1relhSuvVVRIsqTHAcPy5NL0Q.OmGZahaZDvcS', 1, 1, '2019-08-28 04:45:57 UTC', '2019-08-28 04:45:57', '2019-08-28 04:45:57', 762146111)

Railsタイムゾーン変更

なんか「activated_at」に入れようとしているデータに「UTC」が付いているのが気になる、、、、、。
と言うことで、Railsのタイムゾーンを変更してました。

変更は config/application.rb に下記を追記。

    config.time_zone = 'Tokyo'
    config.active_record.default_timezone = :local

再度Railsのテスト

タイムゾーンを変更して、改めて「rails test」!
無事に「green」になりました。

これはもう少し調査が必要かなぁ。
とりあえず今はチュートリアルを先に進めます。