20210312_アウトプット(オリジナルアプリ)

アプトプット画像

3/12行ったこと 3時間

  • オリジナルアプリ(ユーザー編集機能・セキュリティアラートの改善)
    👉3時間



学んだこと

ユーザー編集機能について

  • deviseでユーザー編集をしようとすると、①新しいパスワード、②確認のパスワード、③今までのパスワードの3回入力する必要があることを知った。

  • また、編集画面には「ユーザー削除機能」がデフォルトであることを知った。

  • 一番は「ニックネーム」と「email」を編集できるようにしたかったので、下記記事を参考にしながら編集機能を実装。

qiita.com


なぜattr_accessor :current_passwordをUserモデルに定義しないとエラーが発生するのか
  • 上記、一つ目の記事通りに実装を進めていたところunknown attribute 'current_password'というエラーが発生した。

qiita.com

  • ↑こちらの記事を参考に、attr_accessor :current_passwordを実装したところ、解消。

  • なんで解消したんだろう?と疑問に感じ、いろいろ調べた結果、以下の理由なのではないかと考えている。(間違えていたら教えてください💦)

解消した理由
  • attr_accessorを用いることによってインスタンスを生成した時に(今回で言えば、編集後の情報)form_withの引数として利用できるようになる。

  • binding.pryparamsを見てみると、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実装での高速楕円曲線暗号を司るバージョンが古いんだと理解。

www.npmjs.com

  • この記事を見ながらyarn auditを実行し、Githubと同じエラーが出るか確認。yarn upgradeを行ったところ解消した。(ホッ)

kamoqq.info

  • マスターブランチへ反映したあと、本番環境でも問題なさそうだったのでよかった。


感想

  • アラートについて、解消したくて、ここ2日くらい調べていた。無事に解決出来たようなので一安心。

  • 久しぶりのオリジナルアプリ。楽しかったな。

  • ずっとやりたいけれど出来ていないこととしてmacRubyRailsのバージョンアップがある。

  • ちょっと怖い気持ちもあるけれど、RailsRubyに詳しい憧れている方たちは皆バージョンアップに対応していっているので私もチャレンジしたい。バックアップとって準備を進めよう。