2011-10-15 1 views
2

I가 레일 3.1.1 응용 프로그램에서 다음 클래스 :validates_uniqueness_of 전에 액티브 :: RecordNotUnique

class User < ActiveRecord::Base 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :admin, :moderator, :bio 
    validates_presence_of :username 
    validates_uniqueness_of :username, :case_sensitive => false 
    validates_uniqueness_of :email, :case_sensitive => false 

내 마이그레이션에서 그러나

add_index :users, :email,    :unique => true 
add_index :users, :username,    :unique => true 

, 나는 두 명의 사용자를 만들려고 이메일 또는 사용자 이름이 중복되었습니다. 인증 실패가 아닌 DB 수준 예외가 발생합니다.

ActiveRecord::RecordNotUnique in RegistrationsController#create 
PGError: ERROR: duplicate key value violates unique constraint "index_users_on_username" 

완벽하게 작동하는 다른 유효성 검사가 있지만 DB 작성 전에 고유성 유효성 검사가 수행되지 않는 이유는 무엇입니까? 이 같은

+0

당신이 운이 문제를 다루는 있었나요? –

답변

0

시도 뭔가 :

class User < ActiveRecord::Base 
    attr_accessible :email, 
       :password, 
       :password_confirmation, 
       :remember_me, 
       :username, 
       :admin, 
       :moderator, 
       :bio 
    validates :username, :uniqueness => { :case_sensitive => false }, :presence => true 
    validates :email, :uniqueness => { :case_sensitive => false }