加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ActiveRecord创建(不!)在验证时抛出异常

发布时间:2020-12-17 02:51:08 所属栏目:百科 来源:网络整理
导读:所以我使用ActiveRecord模型验证来验证RESTful应用程序中的表单. 我有一个创建动作: @association = Association.new 并且表单的接收端使用表单参数创建属性的数据哈希,以使用以下方法保存到数据库: @association = user.associations.create(data) 如果验
所以我使用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&轨道2.3.3

解决方法

请仔细阅读 create和 create!的文档.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读