User モデルで 2 つの列が一意であることを検証しようとしています。私はGoogleを検索しましたが、次のコードは機能しないと理解しています:
validates :login, :uniqueness=>true
validates :email, :uniqueness=>true
私の場合、これを行うと、電子メールの一意性は検証されますが、ログインの一意性は検証されません。ログインはデータベース上で一意でなければならないと設定しました。ただし、実行時エラーが既に存在する場合は実行時エラーが生成されるだけです。ユーザーが理解できない500内部サーバーエラーが発生するため、本番環境でそのエラーが発生することは望ましくありません。
これらのフィールドの両方の一意性を検証する方法についてのアイデアはありますか?
使用される認証:
- カンカン
- 工夫する
- 招待可能な工夫
アップデート:
私が言えることから、問題はDevise、特に電子メールとパスワードを検証する検証可能なモジュールによって引き起こされていることがわかります。
更新 2:
Devise から検証可能なモジュールを削除すると、一意性のチェックも行われなくなります。
更新 3:
デバイスが問題の原因ではないようです。むしろ、Devise Invitable という宝石です。この gem を削除すると、検証がトリガーされます。また、この gem はメール フィールドの検証を強制しようとしているようです。この gem の性質上、これは理にかなっていますが、ブロックするべきではありません。