※勉強したてなので間違っていることがあれば、優しくご指摘ください。
Railsチュートリアル7章 ユーザー登録できない
Railsチュートリアルの7章で、ユーザー登録できないというエラーになってしまった。
エラーメッセージを見てみると・・・
unknown attribute ‘password’ for User.

いろいろとググってみたけど、原因は特定できなかった・・・
念のため
①bcryptのインストールは確認済み。アンインストールからの再度bundle installもした。
一応最新のバージョンへ変更する。
②db:migrate済み。
ちなみに『has_secure_password』は・・・
・2つのペアの仮想的な属性(password
とpassword_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で確認するということを学んだのでした・・・。