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级异常。非常感谢!