【Rails】unknown attribute ‘password’ for User. とエラーになる

webあれこれ

※勉強したてなので間違っていることがあれば、優しくご指摘ください。

Railsチュートリアル7章 ユーザー登録できない

Railsチュートリアルの7章で、ユーザー登録できないというエラーになってしまった。

エラーメッセージを見てみると・・・
unknown attribute ‘password’ for User.

いろいろとググってみたけど、原因は特定できなかった・・・

念のため
①bcryptのインストールは確認済み。アンインストールからの再度bundle installもした。
一応最新のバージョンへ変更する。

②db:migrate済み。

ちなみに『has_secure_password』は・・・

・2つのペアの仮想的な属性(passwordpassword_confirmation)が使えるようになる。

・セキュアにハッシュ化したパスワードを、データベース内のpassword_digestという属性に保存できるようになる。

authenticateメソッドが使えるようになる

テキストを参考にコードを書く。

class User < ApplicationRecord

#省略

  #ハッシュ化されたパスワードの作成
  has_secure_password
  #バリデーション設定
  validates :password, presence: true, length: { minimum: 6 }
end

エラーメッセージを日本語訳すると、『パスワードという属性はありません』・・・とある。

エラー画像からもuser_paramsがおかしい・・・と指摘されている・・・

user_controller.rbがおかしいのか・・・?

def create
    @user = User.new(user_params)
    if @user.save
      flash[:success] = "Welcome to the Sample App!"
      # 保存の成功をここで扱う。redirect_to user_url(@user)
      redirect_to @user
    else
      #テンプレートの呼び出し
      render 'new'
    end
  end
  
  #ここから外部では使用できない
  private
    #許可する情報のみ取り出す
    def user_params
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end

paramsの中にそんな属性ないよ!と言われている気がする・・・

ララちゃん
ララちゃん

でも属性は使用できるようにhas_secure_passwordを書いたのだが・・・

byebugを使う

createアクション時にbyebugを発生させる。

byebug…デバッガー。処理を止めてコンソールで操作・確認ができる。

paramsにはちゃんと情報が入っているか確認したい・・・

rails console
//ユーザー情報を確認
params[:user]

//中身にアクセスしたいとき例
params[:user][:name]
params[:user][:password]

params[:user]で調べた時、『password』『password_confirmation』もある!

中身にアクセスもできる!
合ってるよね!?
なんでエラー!?

ララちゃん
ララちゃん

なんじゃこりゃあー-----!!!!!

リロードしてみる・・・

エラー解消・・・・笑

AWSでやっていたのでもしかしたら、ブラウザのあれやこれやだったのかなぁ・・・と。
なんか繋がってないのがbyebugで繋がった?とか?
最新のバージョンにしたから?

また同じようなことがあれば原因を究明します!

とりあえずbyebugで確認するということを学んだのでした・・・。

タイトルとURLをコピーしました