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. PHP - 電子メールの検証
- 2. HTML電子メールの検証?
- 3. 電子メールの検証:JavaScript
- 4. preg_match電子メールの検証。
- 5. 電子メールの検証をトリガーする
- 6. Androidの電子メールの検証とFirebaseの電子メールの検証
- 7. 電子メール検証php
- 8. 電子メールの検証と電話桁
- 9. PHP電子メールIBM電子メールのみの検証(ワールドワイド)
- 10. ブラックベリーアプリケーションでの電子メールの検証
- 11. クライアント側の電子メールの検証
- 12. htmlヘルパーの電子メールの検証 - ASP.Net
- 13. テキストボックスの電子メールの検証
- 14. jQueryでの電子メールの検証
- 15. パスワードと電子メールのテキストフィールドの検証
- 16. jQueryの電子メールの検証
- 17. C#のMailgun電子メールの検証
- 18. 電子メールの失敗の検証 - PHP
- 19. PHPでの電子メールの検証?
- 20. Javaの電子メールとパスワードの検証
- 21. Javascriptの電子メールとパスワードの検証
- 22. HTML検証による電子メールのドメインの検証(RegEx)
- 23. MVCクライアント側電子メールの検証
- 24. 電子メールの検証問題
- 25. Rails 3 - 電子メール検証のヘルプRegex
- 26. createuserウィザードで電子メールの検証
- 27. サブミット時にRegex電子メールの検証
- 28. ウムラウトドメインのマゼンタ電子メール検証?
- 29. C++で電子メールの検証
- 30. RegexでVB.NET電子メールの検証
モデルから検証モジュールを削除しようとしましたか – Viren