当前位置:  开发笔记 > 后端 > 正文

ActiveRecord创建(不!)在验证时抛出异常

如何解决《ActiveRecord创建(不!)在验证时抛出异常》经验,为你挑选了1个好方法。

所以我使用ActiveRecord模型验证来验证RESTful应用程序中的表单.

我有一个创建动作:

@association = Association.new

并且表单的接收端使用表单参数创建属性的数据哈希,以使用以下方法保存到数据库:

@association = user.associations.create(data)

如果验证失败,我想简单地渲染创建操作.问题是.create(not!)方法在模型验证失败的情况下抛出异常.例:

validates_format_of :url,         :with => /(^$)|(^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$)/ix, :message => "Your url doesn't seem valid."

在模型中产生:

ActiveRecord::RecordInvalid Exception: Validation failed: Url Your url doesn't seem valid.

我以为.create!应该抛出异常,而.create不是.

我在这里错过了什么吗?

Ruby 1.8.7 patchlevel 173和rails 2.3.3



1> Salil..:

阅读创建和创建的文档!小心.

既创造又创造!检查回调(在您的情况下验证). 如果引发异常,create方法返回false,如果不是则返回true, 创建!如果记录无效,则引发异常.

但是,如果数据库中有唯一索引且模型上没有验证集,则create 可以抛出ActiveRecord::RecordNotUnique.在这种情况下,您应该添加validates :fieldname, uniqueness: true到模型上.


不完全正确,如果你有一个唯一的索引并且没有验证,`.create`可以抛出ActiveRecord :: RecordNotUnique
推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有