2011-10-15 59 views
2

我有一個Rails 3.1.1應用中的以下類:validates_uniqueness_of之前的ActiveRecord :: 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 } 
相關問題