我的控制器中有这个代码:
@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表现为保存!
答案 0 :(得分:3)
的确,当模型中有validates :status, uniqueness: true
时,save!
会引发异常,但save
则不会。
但是ActiveRecord::RecordNotUnique
被引发,因为列上有唯一性索引,因此验证是在数据库级别上执行的。与ActiveRecord::RecordNotFound
一样,调用find
方法时,虽然find
不是爆炸方法