hikarunoqiita
@hikarunoqiita (Hikaru)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

コンソール上で、ユーザー名を変更して上書き保存したい

Railsチュートリアルで、現在第6章を学習しています。
まだユーザー登録ページを作成していないので、コンソールからサンプルとなるユーザーを登録しました。
試しにユーザー名を変更しようとすると
スクリーンショット 2021-01-03 16.52.31.png
となり false が返ります。
そもそものコマンドが間違っているのでしょうか?

0

2Answer

Comments

  1. @hikarunoqiita

    Questioner

    エラー内容は何度か見てみましたが、パスワードはブランクではいけないとか、短すぎるのはいけないとか・・・書いていました。
    今の時点ではユーザー名を変更するのにパスワードを要求する様な実装はしていないと思いましたが、とりあえずユーザー名を変更した後に、user.password → user.save → true となりました。
    試しに間違ったパスワードも入力してみましたが、trueとなりユーザー名が変更されました。
    password_digestになっているので、どちらのパスワードになっているのか分かりませんが、trueがでたということはパスワードも後者に更新されている様に思います。
    以上の事実から、ユーザー名などのデータを変更した後は、正しいパスワード or 新しいパスワード も入力してあげないと保存できない・・・という結論になりましたが何か間違っている気がします。
  2. Userクラスの内容がわかりませんが、多分passwordは毎度毎度変えるものではないと思うので、

    validates :password, presence: true, on: :create
    validates :password_confirmation, presence: true, if: :password?

    みたいな感じで

    1. 作成時には絶対必要
    2. 以降はpasswordが入ってたら入力確認用のパスワードは入力必須(あるのなら)

    とかにする必要があるかなと思います。

6章を読んでみました.

has_secure_password

辺りまで進んでいるなら,password 指定しないと save できないのが正しい動作のような気がします.

>> User.create(name: "Michael Hartl", email: "michael@example.com",
?>             password: "foobar", password_confirmation: "foobar")

まとめ辺りにも上記のように,password を指定して User.create している例があります.

0Like

Your answer might help someone💌