0
0

More than 3 years have passed since last update.

Railsチュートリアル 12章 リスト11.29のテストでエラーが出る

Posted at

エラーメッセージ

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 consoleUser.column_namesのコマンドでちゃんとreset_sent_atがあることを確認。いよいよわけが分からなくなる。

解決策

どうやらtest環境でのdbを更新しないといけないらしい。

既存のマイグレーションに変更が加えられていると、テストデータベースを再構築する必要があります。bin/rails db:test:prepareを実行することで再構築できます。

引用元:https://railsguides.jp/testing.html#%E3%83%86%E3%82%B9%E3%83%88%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B

そこでbin/rails db:test:prepareを実行。

無事にテストが通りました!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0