背景
Railsチュートリアル 11.4 「本番環境でのメール送信」の最後
$ git push heroku
$ heroku run rails db:migrate
上記コマンド入力後、アカウント有効化を試すために新規登録をしたところ
問題
We're sorry, but something went wrong. と表示。
$ heroku logs
でエラーをチェック。
> Completed 500 Internal Server Error in 173ms (ActiveRecord: 3.5ms)
> NoMethodError (undefined method `activation_digest=' for #<User:0x00007fa1dc755a78>
> Did you mean? activation_token=):
db:migrate したはずなのに、 activation_digest が定義されていないと言われる。
rails db:migrate:status で確認。
$ rails db:migrate:status
> Status Migration ID Migration Name
> --------------------------------------------------
> up 20181101025217 Create users
> up 20181101055629 Add index to users email
> up 20181101105719 Add password digest to users
> up 20181103133504 Add remember digest to users
> up 20181104140053 Add admin to users
> up 20181109103710 Add activation to users
$ heroku run rails db:migrate:status
> Status Migration ID Migration Name
> --------------------------------------------------
> D, [2018-11-10T15:06:18.842062 #4] DEBUG -- : (1.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
> up 20181101025217 Create users
> up 20181101055629 Add index to users email
> up 20181101105719 Add password digest to users
> up 20181103133504 Add remember digest to users
> up 20181104140053 Add admin to users
> up 20181109103710 Add activation to users
開発環境、本番環境ともに Add activation to users は migrate されている。
解決
$ heroku restart
Heroku を再起動したところ、エラーは消え、メール送信、アカウント有効化まで確認できた。