20210312_アウトプット(オリジナルアプリ)
3/12行ったこと 3時間
- オリジナルアプリ(ユーザー編集機能・セキュリティアラートの改善)
👉3時間
学んだこと
ユーザー編集機能について
deviseでユーザー編集をしようとすると、①新しいパスワード、②確認のパスワード、③今までのパスワードの3回入力する必要があることを知った。
また、編集画面には「ユーザー削除機能」がデフォルトであることを知った。
一番は「ニックネーム」と「email」を編集できるようにしたかったので、下記記事を参考にしながら編集機能を実装。
なぜattr_accessor :current_password
をUserモデルに定義しないとエラーが発生するのか
- 上記、一つ目の記事通りに実装を進めていたところ
unknown attribute 'current_password'
というエラーが発生した。
↑こちらの記事を参考に、
attr_accessor :current_password
を実装したところ、解消。なんで解消したんだろう?と疑問に感じ、いろいろ調べた結果、以下の理由なのではないかと考えている。(間違えていたら教えてください💦)
解消した理由
attr_accessor
を用いることによってインスタンスを生成した時に(今回で言えば、編集後の情報)form_with
の引数として利用できるようになる。binding.pry
でparams
を見てみると、params
において、パスワードは運ばれていない。(そういう風にupdate_resource
メソッドにおいて定義したため)
[1] pry(#<Users::RegistrationsController>)> params => <ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"7AKiLMgQM+1Rn7VpOpk1ECK79tN2FXLXASj806SmYo7Mpe5xYlWqCxNbkT+MWO9QnBFpzHNiA==", "user"=>{"nickname"=>"えり", "email"=>"kano@gmail.com", "birthdate(1i)"=>"1993", "birthdate(2i)"=>"7", "birthdate(3i)"=>"17"}, "commit"=>"更新する", "controller"=>"users/registrations", "action"=>"update"} permitted: false>
しかし、データを保存(更新)するには、DB上のカラム名と内容を一致させる必要がある。
その時に、
attr_accessor :current_password
を定義しておくことによって、データベースには保存しない仮の属性を作り出すことができ、DBへ保存(更新)できるようになる。
初めてのセキュリティアラート
GitHub上に、アラートが表示された(°_°)
デプロイしていることもあり、慎重に進めようとこのエラーは何なのか調べた。
下記の記事より、npmに管理されている
elliptic
というプレーンなJavaScript実装での高速楕円曲線暗号を司るバージョンが古いんだと理解。
- この記事を見ながら
yarn audit
を実行し、Githubと同じエラーが出るか確認。yarn upgrade
を行ったところ解消した。(ホッ)
- マスターブランチへ反映したあと、本番環境でも問題なさそうだったのでよかった。
感想
アラートについて、解消したくて、ここ2日くらい調べていた。無事に解決出来たようなので一安心。
久しぶりのオリジナルアプリ。楽しかったな。
ちょっと怖い気持ちもあるけれど、RailsやRubyに詳しい憧れている方たちは皆バージョンアップに対応していっているので私もチャレンジしたい。バックアップとって準備を進めよう。