エラーメッセージ
ERROR["test_password_resets", PasswordResetsTest, 0.9276049650002278]
test_password_resets#PasswordResetsTest (0.93s)
NoMethodError: NoMethodError: undefined method `reset_sent_at=' for #<User:0x000000000776da70>
Did you mean? reset_token=
app/models/user.rb:63:in `create_reset_digest'
app/controllers/password_resets_controller.rb:12:in `create'
test/integration/password_resets_test.rb:18:in `block in <class:PasswordResetsTest>'
Userモデルにreset_sent_atカラムがないよ!ってエラーを吐きました。
試したこと
調べてみたら同じようなエラーが出ている方がちらほら。rails db:rollback
をした後マイグレーションファイルを以下のように編集してrails db:migrate
を実行。
_add_reset_to_users.rb
class AddResetToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :reset_digest, :string
add_column :users, :reset_sent_at, :datetime
end
end
これでもまたエラー…。rails console
でUser.column_names
のコマンドでちゃんとreset_sent_atがあることを確認。いよいよわけが分からなくなる。
解決策
どうやらtest環境でのdbを更新しないといけないらしい。
既存のマイグレーションに変更が加えられていると、テストデータベースを再構築する必要があります。bin/rails db:test:prepareを実行することで再構築できます。
そこでbin/rails db:test:prepare
を実行。
無事にテストが通りました!!