0

User モデルには標準の電子メール検証があります。要件が変更され、新しい検証では正規表現を使用して形式がチェックされ、電子メールでダッシュが許可されないようになります。

問題は、ダッシュを持つシステム内の既存のユーザーをチェックしないようにするにはどうすればよいかということです (これは今のところ許可しておきたいことです)。

モデルに検証を適用すると、メール フィールドが検証されるまで、ユーザーの他のフィールドを保存できません。

これを回避するにはどうすればよいですか? このような場合のベストプラクティスは何ですか?

4

1 に答える 1

2

私はおそらくそうするでしょう:

validates :email, format: { with: <new_format_regex> }, if: email_changed?

追加if: email_changed?すると、電子メールが変更された場合にのみ、この検証がトリガーされます。したがって、パスワードを変更しようとしない限り、既存のユーザーに対してはトリガーされず、アカウントを作成するすべての新しいユーザーに対してトリガーされます。

于 2014-06-17T11:10:49.460 に答える