2016-12-14 27 views
0

我有一個ActiveRecord模型的電子郵件驗證,用於驗證的獨特性:活動記錄加薪recordnotunique,而不是採取

validates :email, 
      allow_blank: true, 
      format: { with: /\A.*@.*\z/ }, 
      uniqueness: true 

當我嘗試插入一個新的記錄具有相同的電子郵件,它給了我下面的錯誤:

@messages={:email=>["has already been taken"]}, @details={:email=>[{:error=>:taken, :value=>"[email protected]"}

但是,我想要它提高ActiveRecord::RecordNotUnique

這可能嗎?

我已經嘗試在遷移中添加一個電子郵件索引,unique: true但這沒有做任何事情。我還能嘗試什麼?

+0

如果驗證失敗,它不會嘗試並保存它,所以永遠不會碰到唯一索引(除非使用忽略驗證的保存方法) –

回答

1

如果你想有一個ActiveRecord::RecordNotUnique例外,而不是:taken驗證錯誤,你需要做兩件事情:

  1. 的唯一索引添加到您的數據庫列
  2. 從模型中取出的唯一性驗證