Mysql ActiveRecord在保存时引发异常,而Rails中没有出现异常

Mysql ActiveRecord在保存时引发异常,而Rails中没有出现异常,mysql,ruby-on-rails,ruby-on-rails-4,activerecord,ruby-on-rails-5,Mysql,Ruby On Rails,Ruby On Rails 4,Activerecord,Ruby On Rails 5,我的控制器中有以下代码: @user = User.new(params.require(:user).permit(:email,:password)) if @user.save redirect_to(home_users_path, :notice => "Success") else redirect_to(new_user_path , :notice => 'Signup Failed.') end 但是我在Users

我的控制器中有以下代码:

 @user = User.new(params.require(:user).permit(:email,:password))
    if @user.save
      redirect_to(home_users_path, :notice => "Success")
    else
      redirect_to(new_user_path , :notice => 'Signup Failed.')
    end
但是我在UsersController#create中得到了ActiveRecord::RecordNotUnique


我知道记录不是唯一的,我的问题是我正在使用.save,它不应该生成任何异常,而是返回false。但在我的应用程序中,save的行为是save

事实上,当模型中有
验证:状态、唯一性:true
时,
保存将引发异常,但
保存
不会


但是会引发
ActiveRecord::RecordNotUnique
,因为列上有唯一性索引,所以验证是在数据库级别执行的。就像
ActiveRecord::RecordNotFound
一样,当调用
find
方法时,虽然
find
不是一个简单的方法

添加validates:email,:university:true解决了我的问题。我认为rails将自行处理db级异常。非常感谢!