为什么我不能在控制台中检查ActiveRecord验证?

mic*_*lec 6 ruby validation console activerecord

我现在正在学习RoR,我想我一定是在误解.

我有一个ActiveRecord类调用User,其上有简单的验证:name和:email,如presence:true,length:{maximum:15}等等.我以为我会在控制台中检查验证.我进入rails console(开发环境),并创建一个名称太长的新实例,例如user_instance = User.new(name:"aaaaabbbbbcccccddddd",email:"").

验证不会引发任何错误.当我尝试user_instance.save时,记录不会写入数据库,因此在该阶段显然工作正常.我究竟做错了什么?

Flo*_*nt2 13

当你想记录保存引起的异常,使用save!替代save(用相同update/ update!,create/create!).

随着save如果存在验证错误,你会不会引发异常,它只是返回false.您还可以检查实例上是否存在错误user_instance.valid?并获取错误user_instance.errors.

查看验证何时发生?.


Bas*_*nni 5

如果您尝试在模型上设置无效数据,验证将不会抛出错误,但是保存将失败.

如果你想检查验证是否正常工作,只需检查user.valid?它应该返回false

打电话后有效吗?,您可以检查user.errors以查找模型上设置的特定错误.