1

アプリでモジュールをvalidatable有効にしています。登録のためにユーザーのメールアドレスを尋ねている画面で、メールが既に存在する場合...これは私が見るエラーです:

We found 2 errors that prevented your account from being created:
Email has already been takenEmail has already been taken

これはログからのものです:

Started POST "/users" for 127.0.0.1 at 2012-06-21 14:37:41 -0500
Processing by RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"zcpDH5U4XkHcYWVHEqrshgmzGiqsZHI9mD6Inrdr8uE=", "user"=>{"email"=>"abc@email.com"}, "commit"=>"Sign Me Up!"}
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" = 'abc@email.com' LIMIT 1
  User Exists (0.1ms)  SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('abc@email.com') LIMIT 1
   (0.1ms)  rollback transaction
  Rendered devise/shared/_links.erb (0.8ms)
  Rendered devise/registrations/new.html.erb within layouts/application (6.5ms)
Completed 200 OK in 1118ms (Views: 290.9ms | ActiveRecord: 0.0ms)

2つのチェックを実行して1つだけ実行しようとすると、どうすれば取得できますか?

4

2 に答える 2

0

Rails は検証ごとに個別のチェックを実行するため、存在と一意性バリデーターは 2 つのチェックになります。冗長なエラー メッセージを回避したい場合は、以下のようなことを行い、固有のエラー メッセージのみを出力できます。

#error_explanation
  .alert.alert-error
    Please correct the following #{pluralize(object.errors.full_messages.uniq.size, "error")}:
   %ul
   - object.errors.full_messages.uniq.each do |msg|
     %li #{msg}
于 2012-12-19T01:33:16.563 に答える
0

ログインしようとしましたが、ログインできません。

私は ruby​​ をやっていませんが、あなたはおそらくこれら両方の基準を満たすメールを入力しているようです。おそらく2番目のものだけが必要です。お役に立てれば!

User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = 'abc@email.com' LIMIT 1
User Exists (0.1ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('abc@email.com') LIMIT 1

于 2012-06-21T21:22:13.837 に答える