3

User モデルに関連付けられた 4 つのフォームがあります。

  1. 登録(新規) - パスワードが必要です -email, name, password, password_confirmation
  2. 設定の編集(編集) - パスワードは必要ありません -email, name
  3. パスワードの変更- パスワードが必要です。ログインしているユーザーがパスワードを変更するためのページ -current_password, password, password_confirmation
  4. パスワードのリセット- パスワードが必要です。認証されていないユーザーがパスワード リセット メールから受信した後、パスワードを変更するためのページ -password, password_confirmation

私が持っている最も近い検証ソリューションは-

validates :password, presence: true, length: { minimum: 6 }, on: :update, if: lambda{ |u| u.password.blank? }

これはポイント 1、3、および 4 を満たしますが、ユーザーが属性を更新することはできませんdef update(ポイント 2) がないparams[:user][:password]ため、{presence: true}検証がトリガーされます。

フォームにパスワードフィールドが含まれている場合validate_presence_of :passwordのみ、最善の方法は何ですか?

4

4 に答える 4