0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ralisチュートリアルの第6章6.3.2の6.39のrails testが通らない問題

Posted at

こんにちは!

Ralisチュートリアルの第6章の6.3.2のリスト6.39にて$ rails testが通らないトラブルが発生いたしました。これを解決したため、その方法を備忘録として残しておこうと思います。

2.【課題】
 リスト6.39の$ rails testを実行した際、以下に記載の
 エラーメッセージが表示されて、失敗する。(①)
 ⇒ activemodel::unknownattributeerror: unknown attribute 'password' for user.
①.png
  画像①

3.【(考えられる)原因】
1) 'password'というカラムが入っていない。
→ 以下の画像の方法(②)にて、passwordのカラムがあることは確認できた。
②.png
     画像②

しかし、以下
You don't have bcrypt installed in your application.
Please add it to your Gemfile and run bundle installというエラーメッセージを発見したため、Gemfileに bcryptをインストールし、bundle installを試みることにした。

  2) Gemfileにbcryptがインストールされていない。
  → 以下の画像の方法(③)のようにコードを実施した結果、bundle installは完了した。
③.png
    画像③

 しかし、以下の画像④のように肝心のbcryptは未だインストールされない。
    ④.png
    画像④

4.【開発環境】
PC: MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
Ruby: ruby-2.6.3 [ x86_64 ]
Rails: Rails 6.0.3.5
OS: macOS 10.14.6
総合開発環境(IDE): AWS Cloud9

上記に対して、実際の原因は以下でした。
「”bcryptを使用する場合、パスワードを暗号化した値を入れるためのpassword_digestというカラムのみ追加される。
passwordやpassword_confirmationという値は、userクラスに属性としては追加されるが、データベースには対応していない。”」

つまり、実際のデータベースに保存されるのは、password_digest
の値のみであるということであるので、「"password_digestに直接値を入力するようなプログラムに書き換えればいい”」ということになります。

そのように書き換えたコードが以下の画像⑤になります。
(1) rails_content.png
    画像⑤

そうすると、画像⑥のようにテストが通ることが確認できました。
(5) rails_test.png
    画像⑥

もし同じ箇所で躓いている方がいらっしゃればご参考までに
ご覧いただけますといいかと思います。

いつもありがとうございます。それではまた!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?