0

これは私のユーザーモデルです:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :token_authenticatable, :confirmable, :timeoutable, 
         :recoverable, :rememberable, :trackable, :validatable,
                 :email_regexp =>  /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i

  attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token, :category_ids
    validates_uniqueness_of :email, :case_sensitive => false
    validates_confirmation_of   :password

end

DBに存在する電子メールアドレスを入力すると、ページが再ロードされず、エラーメッセージなども表示されません。

これは私がログに見るものです:

Started GET "/validators/uniqueness?case_sensitive=false&user%5Bemail%5D=abc%40email.com" for 127.0.0.1 at 2012-06-21 03:59:57 -0500
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE ("users"."email" LIKE 'abc@email.com') LIMIT 1


Started GET "/validators/uniqueness?case_sensitive=false&user%5Bemail%5D=abc%40email.com" for 127.0.0.1 at 2012-06-21 03:59:57 -0500
  User Exists (0.2ms)  SELECT 1 AS one FROM "users" WHERE ("users"."email" LIKE 'abc@email.com') LIMIT 1
4

2 に答える 2

0

デバイスの検証を上書きしようとしているのはなぜですか? Deviseはすべてを処理します。ログは、ある種の JS フォーム検証を行おうとしていることを示していますよね? その場合は、別の方法で既存のユーザーを確認してみてください。

email = params[:email] || ""
@exists = User.where(:email=>email.downcase).count
于 2012-06-21T11:27:12.437 に答える
0

「解決策は、代わりに完全にカスタマイズされた検証を実行するか、例で行ったように電子メールの検証を上書きすることです

見る

https://github.com/bcardarella/client_side_validations/issues/455#issuecomment-12170527

于 2013-04-18T18:25:58.457 に答える