未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

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」になりました。

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