#はじめに
deviseでユーザーの登録内容を編集する方法
deviseでのパスワードの取り扱いは、セキュリティーの観点から編集(update)ができない仕様になっていて、しようとしても編集できず強制ログアウトされてしまう。
また、viewを編集して、入力できない様にしていてもバリデーションが発動してしまう。
なので、編集(update)のさいはそのバリデーションをoffにしなければならない。
###目次
1.devise導入と各種ファイル作成・設定
2.バリデーションの解除
3.バリデーションのカスタマイズ
4.veiwページの編集
#開発環境
ruby 2.6.5
rails 6.0.0
devise 4.7.3
#実装
####1.devise導入と各種ファイル作成・設定
deviseのインストール
rails g devise:view モデル名
ルーティングの設定
これで下準備が整いました。
####2.バリデーションの解除
先ず、デバイスをインストールするとデフォルトで設定されているバリデーションを解除します。
モデルにてバリデーションの解除
devise :database_authenticatable, :registerable,
:recoverable, :rememberable :validatable #←これを削除#
:validatableがデバイスのバリデーションを司ってるのでこれを削除。
手動で変更できる様になりました。
この状態で編集(update)する事ができますが、今のままだと全てがoffになってるので、新規登録(create)する時のバリデーションもoffになったままです。
####3.バリデーションのカスタマイズ
新規登録(create)するときはバリデーションを発動させたいので、onオプションを使ってバリデーションのタイミングを指定。
validates :password, on: :create #←createつまり保存の時のみonにします。#
validates :nickname, presence: true
validates :name, presence: true
これで編集時(update)はoff、新規登録時(create)はonにする事が出きました。
####4.veiwの編集
ちなみに、パスワードの変更機能自体は、「現在のパスワード」→「新しいパスワード」、、、、としていけば可能ですが、パスワードやメールアドレスは厳重なセキュリティーが必要です。
名前や住所などのページで一緒に取り扱わず、専用ページを作成する事をおすすめします。
#まとめ
deviseってユーザー管理機能を実装するときに非常に便利で、ユーザーの登録を始め様々な機能が標準装備されています。
ただ、自分の思った仕様にカスタマイズするには、さまざまな操作が必要です。
###最後に
私はプログラミング初学者ですが、自分と同じ様にエンジニアを目指す方々の助けになればと思い、記事を投稿しております。
それではまた次回お会いしましょう〜
参考文献
https://qiita.com/Nosuke0808/items/415a82c2cdd66fc7545c