我在 Rails 3.1.1 应用程序中有以下类:
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
但是,当我尝试使用重复的电子邮件或用户名创建两个用户时,我得到一个数据库级别的异常,而不是验证失败:
ActiveRecord::RecordNotUnique in RegistrationsController#create
PGError: ERROR: duplicate key value violates unique constraint "index_users_on_username"
还有其他验证可以完美运行,但为什么在创建数据库之前不执行唯一性验证?