Devits Validatableモジュールには次のものが含まれています validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
このバリデータを無効にするにはどうすればよいですか?電子メールの検証をスキップする
4
A
答えて
2
私はあなたはそれが非常に醜いが、見つけることを恐れている:(?我々は正しい、分岐1.1について話している)1.xの工夫で
それを選択するためにはオプションがありませんので、
クラスユーザーはMongoidドキュメントを拡張します(ここではARは同じですが、ARはこれと同じですが、以下のdelete_ifメソッドにAR Validatorクラスを配置するだけです)。devise initializersが含まれていますので、不要なバリデータは削除してください。このハックはうまくいくようです:
User._validators[:email].try{ |validators|
validators.delete_if{ |validator|
validator.is_a? Mongoid::Validations::UniquenessValidator
}
}
だから、Userクラスの定義は次のようになります。Devise's own documentation on the Validatable moduleパー
class User
include Mongoid::Document
devise :database_authenticatable, :registerable, :validatable
_validators[:email].try{ |validators|
validators.delete_if{ |validator|
validator.is_a? Mongoid::Validations::UniquenessValidator
}
}
# ...
end
9
...
Validatableは、ユーザーのメールアドレスとパスワードのために必要なすべての検証を作成します。 自分でバリデーションを作成したい場合は、オプションです。電子メールが存在し、一意で、その形式が有効かどうかを自動的に検証します。また、パスワード、確認、および長さの存在をテストします。
私の強調を強調する。
Validatable
モジュールを無効にし、独自の検証をロールバックする必要があります。
devise :database_authenticatable, :registerable, :rememberable,
:trackable, :timeoutable, :confirmable, :recoverable, :lockable
# :validatable <-- this one needs to go
lib/devise/models/validatable.rb
の内容を確認し、独自のユーザー・クラスに関連するセクションを引っ張ります。現在3.2.x
バージョンラインの場合は、必要なものは何でも変更を加えるその後...
class User < ActiveRecord::Base
# From Devise module Validatable
validates_presence_of :email, if: :email_required?
validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
validates_format_of :email, with: email_regexp, allow_blank: true, if: :email_changed?
validates_presence_of :password, if: :password_required?
validates_confirmation_of :password, if: :password_required?
validates_length_of :password, within: password_length, allow_blank: true
# [ ... ] The rest of your model stuff
protected
# From Devise module Validatable
def password_required?
!persisted? || !password.nil? || !password_confirmation.nil?
end
# From Devise module Validatable
def email_required?
true
end
end
を次のようになります。
現実のシナリオ:Paranoia gemを多くのプロジェクトで使用しますが、このモジュールでは動作しません。だから私はそれを削除し、電子メールの一意性チェックをカスタマイズするようにカスタマイズします...
validates_uniqueness_of :email, scope: :deleted_at
関連する問題
- 1. preg_match電子メールの検証。
- 2. HTML電子メールの検証?
- 3. PHP - 電子メールの検証
- 4. PHP電子メールIBM電子メールのみの検証(ワールドワイド)
- 5. テキストボックスの電子メールの検証
- 6. jQueryでの電子メールの検証
- 7. ブラックベリーアプリケーションでの電子メールの検証
- 8. jQueryの電子メールの検証
- 9. クライアント側の電子メールの検証
- 10. HTML検証による電子メールのドメインの検証(RegEx)
- 11. 電子メールの検証問題
- 12. ウムラウトドメインのマゼンタ電子メール検証?
- 13. C++で電子メールの検証
- 14. MVCクライアント側電子メールの検証
- 15. 電子メールの検証MXルックアップ
- 16. RegexでVB.NET電子メールの検証
- 17. Rails 3 - 電子メール検証のヘルプRegex
- 18. 検証電子メールの有無
- 19. createuserウィザードで電子メールの検証
- 20. Sitefinityアカウント作成電子メール検証プロセス
- 21. jQueryフォーム検証プラグイン:電子メールに.EDUアドレスを要求する
- 22. javascriptで電子メールを検証する方法
- 23. 電子メールを送信する電子メールクライアントを検出する
- 24. joomla 1.7の電子メールの価値を検証しますか?
- 25. Javascript電子メールの検証+テキストミスの振る舞い
- 26. Silverlight検証。電子メールの検証に問題があります
- 27. Javascriptを複数の電子メールの正規表現の検証
- 28. GAE pythonによる電子メール検証プロセスの実装
- 29. Drupalで電子メールの検証を行うフォーム
- 30. 電子メールがjQueryの検証で完全に検証されない
モデルから検証モジュールを削除しようとしましたか – Viren