LoginSignup
19
17

More than 5 years have passed since last update.

Deviseでon:update属性のvalidationがあるときパスワード再発行ができない

Last updated at Posted at 2013-05-29

やりたいこと

認証システムにDeviseを利用。
初回登録はメールアドレスとパスワードのみでメール認証後の本登録で名前などその他の項目を取得したい。(on:updateにてvalidationを設定)

app/model/user.rb
validates :name, presence: true, on: update

この時、初回登録のみ済ませた状態でパスワードの再発行をしようとすると上記のnameのバリデーションが引っかかってパスワードが再発行できない。これを解決したい。

※on:updateじゃないvalidationの場合にはinvalidなデータは存在しないはずなのでこのような事は起こりません。

validateの条件の追加

パスワードを変更する時on:updateのvalidationは無効になるよう修正。

app/model/user.rb
validates :name, presence: true, on: update, unless: :encrypted_password_changed?

これを忘れてると初回登録だけをやったユーザさんがパスワード忘れたときに何もできなくなるので要注意。

19
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17